-1

任何人都可以解释当我运行下面的 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

我的预期行为是将 itervalue 从 5 到 50 的每个值多次打印到屏幕上(测试列表中的每个列表一次)。例如,如果我将测试列表定义为,就会发生这种情况。

testlists = [[1,2,3],[5,2,1],[3,2,9]] 

实际发生的是只有第一个迭代值被打印到输出(5 被打印了数百次)。前任:

5
5
5
#and so on

这里到底发生了什么?一般来说,我是 python 和动态语言的新手。谢谢你的帮助。

我在运行 python 2.6.6 和 2.7.3 的计算机上对此进行了测试。

4

1 回答 1

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
于 2013-04-14T04:53:00.650 回答