Adding/appending一个循环到另一个循环的结尾

Adding/appending a loop to the end of another a loop

我想在另一个循环的末尾添加一个循环。但是我试过都失败了,我不知道该怎么办

我试过了

for i in range(2):
   print i
   for r in range(4, 6):
     print i.append(r)

for i in range(2):
   print i
   print i.append(4,5)

我预计:

0
1
4
5

但我收到了以下错误:

第一个代码示例错误:

Traceback:(most recent call last):
  File "main.py", line 4, in <module>
    print i.append(r)
AttributeError: 'int object has no attribute 'append'

第二个代码示例错误:

Traceback:(most recent call last):
  File "main.py", line 4, in <module>
    print i.append(4, 5)
AttributeError: 'int object has no attribute 'append'

此代码生成您似乎需要的输出:

for i in range(2):
   print i
for r in range(4, 6):
  print r

如果您要做的只是连续打印 2 个范围的所有值,那么只需将它们加在一起即可。

for i in range(2) + range(4, 6):
   print i

结果如下:

0
1
4
5

对于 Python3,您必须将范围包装在 list 中,或者为了更优雅和向前兼容的解决方案,使用 itertools.chain 它结合了两个范围,使它们成为一个可迭代的范围。

for i in chain(range(2), range(4, 6)):
   print(i)

如果您要做的是将两个范围都放入一个列表中,那么链也可以工作:

list(chain(range(2), range(4, 6)))
#[0, 1, 4, 5]

或者将它们加在一起

#py2
range(2) + range(4, 6)
#py3
list(range(2)) + list(range(4, 6)) 

其他答案也不错,但如果您需要一个列表,这就是您想要在不使用导入的情况下尝试做的事情。

lst = []
for i in range(2):
   lst.append(i)
for r in range(4, 6):
   lst.append(r)
print lst 

您的代码不起作用,因为 i 是第一个 for 循环中的值,您不能将值附加到值。

下面的 for 循环将得到您想要的结果

for i in range(2):
   print(i)
for r in range(4, 6):
    print(r)