奇怪的python嵌套for loop behavii

2024-10-01 02:28:28 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能解释一下发生了什么吗 当我运行下面的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的每个值多次打印到屏幕上(testlist中的每个列表一次)。例如,如果我将测试列表定义为。在

^{pr2}$

实际上,只有第一个itervalue被打印到输出(5被打印出数百次)。例如:

5
5
5
#and so on

这里到底发生了什么?一般来说,我对python和动态语言还不熟悉。谢谢你的帮助。在

我在运行python2.6.6和2.7.3的计算机上进行了测试。在


Tags: 代码inimport列表for屏幕defrange
1条回答
网友
1楼 · 发布于 2024-10-01 02:28:28

嗯, 问题是您的testlist只能循环一次,因为它不是一个list/tuple而是一个生成器。因此,内部循环只运行一次。在

更改代码:

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

相关问题 更多 >