奇怪的python嵌套循环行为

时间:2013-04-14 04:45:07

标签: python loops

任何人都可以解释发生了什么 当我运行下面的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的计算机上测试了这个。

1 个答案:

答案 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