在范围内的数字之间添加数字

时间:2014-02-25 10:28:46

标签: python loops range

我的范围是10-20,我想在每个数字之间添加一个0,例如:

范围(10,15)返回10,11,12,13,14

我希望它循环并返回1000,1010,1020,1030和1040。

我试过了:

a = range(10,20)

for i in a: 
    i.append(0)
    print (i)

没有运气。错误消息说:

    i.append(0)
AttributeError: 'int' object has no attribute 'append'

我做错了什么?感谢。

3 个答案:

答案 0 :(得分:4)

您正在尝试将字符串添加到您不能的数字中。您应该首先将数字转换为字符串。

[int('0'.join(str(i))+'0') for i in range(10, 20)]

答案 1 :(得分:1)

正如Tim Pietczker在他的评论中提到的(这更像是一个答案),你不需要坚持一个增量的范围。你可以简单地说:

a = range(1000,2000,10)

但是,原始代码可以修改如下:

a = range(10,20)

for i in a:
    si=str(i)   # convert your i integer to si string
    newsi=''    # initalize a new empty string
    for letter in si:      # loop through your string of digits
        newsi+=letter      # add the oncoming digit to the new string
        newsi+=0           # add a 0 to the new string
    newi=int(newsi)  # convert your new string to integer
    print newi

答案 2 :(得分:1)

此任务可以使用字符串解决(此处隐式附加0)或将此问题保留在整数域中。将任一方法构建为函数,然后使用列表推导或内置map将0添加到您范围内的每个项目。

选项1:转换为字符串,添加0,转换回整数

int(''.join((s+'0' for s in str(13)))

选项2:保持整数域

result = 0
digit = 0
num = 14
while num>1:
    result += 10**(2*digit) * (num % 10)
    num //= 10 # integer division
    digit += 1
return result

您是否有机会寻找range(1000, 1050, 10),其值为1000, 1010, 1020, 1030, 1040