任何人都可以解释发生了什么 当我运行下面的python片段时?
import itertools
def prob():
testlists = itertools.combinations([1,2,3,4,5,6,7,8,9,0],4)
for itervalue in range(5,50):
for tlist in testlists:
print itervalue
我的预期行为是将每个从5到50的itervalue值多次打印到屏幕上(对于测试列表中的每个列表一次)。如果我将测试列表定义为例如。
,则会发生这种情况testlists = [[1,2,3],[5,2,1],[3,2,9]]
实际发生的是,只有第一个itervalue被打印到输出(5个被打印出数百次)。 EX:
5
5
5
#and so on
这到底发生了什么?我是python和动态语言的新手。谢谢你的帮助。
我在运行python 2.6.6和2.7.3的计算机上测试了这个。
答案 0 :(得分:1)
那么, 问题是你的测试列表只能循环一次,因为它不是列表/元组而是生成器。因此,您的内部循环只运行一次。
更改您的代码:
import itertools
def prob():
testlists = list(itertools.combinations([1,2,3,4,5,6,7,8,9,0],4))
for itervalue in range(5,50):
for tlist in testlists:
print itervalue