如何将Python循环输出放在列表中

时间:2016-09-05 00:30:25

标签: python

作为Python的初学者(SAGE),我想把这个for循环的输出 列表:

for y in [0,8] : 
   for z in [0,1,2,3] :
     x=y+z

     print x

输出

0
1
2
3
8
9
10
11

(垂直地)。我想要一个列表,以便我可以将它用于以后的操作: 我想要[1,2,3,8,9,10,11]。 我发现了一个类似的问题,我意识到输出是重新计算的 每一次。有没有一种简单的方法将它们存储在列表中?根据对另一个答案的建议,我试着"追加"像这样,但它给出了一条错误信息:

x=[]
for y in [0,2*3] : 
 for z in [0,1,2,3] :
   x=y+z
   x.append(x)

  print x

7 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

lst = [y+z for y in [0,8] for z in [0,1,2,3]]
print(lst) # prints:  [1,2,3,8,9,10,11]

您的代码无法正常工作的原因是因为您使用变量x来处理两个不同的事情。首先将其分配给列表,然后将其分配给整数。 所以python认为x是一个整数,整数不具有属性append()。因此Python引发了错误。补救措施只是为变量命名不同的东西。但是,您应该使用比xyz更具描述性的内容,除非他们的“一次性”'变量

答案 1 :(得分:0)

因为您在此行设置了从 end_game = input("To exit enter N, to play again enter any key ") if end_game == 'n' or end_game == 'N': print("THANKS FOR PLAYING " + user_name + '!') break x的变量listint

x = y + z - 循环不具有函数或类的作用域,因此如果将变量设置在循环之外,则变量与循环中的变量相同。

答案 2 :(得分:0)

试试这个:

import itertools
temp = [y+z for y,z in list(itertools.product([0,8], [0,1,2,3]))]

答案 3 :(得分:0)

您还可以使用itertools.product:

在功能上进行此操作
from itertools import product

lst = [y + z for y, z in product([0, 8], [0, 1, 2, 3])]
print(lst)

将输出[0, 1, 2, 3, 8, 9, 10, 11]

答案 4 :(得分:0)

尝试:

x = [y+z for y in [0,8] for z in [0,1,2,3]]

答案 5 :(得分:0)

您可以简单地使用列表推导,例如:

>>> lst = [y+z for y in [0,8] for z in [0,1,2,3]]
>>> lst
[0, 1, 2, 3, 8, 9, 10, 11]

任何Python程序员都非常清楚。

或者您可以使用range

>>> lst=[]
>>> for l in (range(i, i+4) for i in [0, 8]):
...     lst.extend(l)
>>> lst
[0, 1, 2, 3, 8, 9, 10, 11]

或者,因为有些人似乎喜欢复杂的答案:

>>> import itertools  
>>> lst = list(itertools.chain(*[range(i, i+4) for i in [0,8]]))
>>> lst
[0, 1, 2, 3, 8, 9, 10, 11]

答案 6 :(得分:0)

你有很多方法!首先,作为原始代码,您可以这样做:

lst=[]
for y in [0,8] : 
    for z in [0,1,2,3] :
        x=y+z
        lst.append(x)

print lst

您可以尝试list comprehension

lst = [y+z for y in [0,8] for z in [0,1,2,3]]
print lst

您还可以使用itertool chain

import itertools  
lst = list(itertools.chain(*[range(i, i+4) for i in [0,8]]))
print lst

另一种方式是itertool products

import itertools
lst = [y+z for y,z in list(itertools.product([0,8], [0,1,2,3]))]
print lst

在所有情况下,output都是:[0, 1, 2, 3, 8, 9, 10, 11]