有关组合的for循环的问题

时间:2019-10-08 12:54:41

标签: python-3.x

我已经从iter工具中导入了排列/组合,当我遍历数字的各种组合时,第二个for循环一旦到达终点就不会再次运行。请查看代码,我想它将更有意义

from itertools import permutations


def main():
list=[0,1,2,3,4,5,6,7,8,9]
p2=permutations(list,2)
p3=permutations(list,3)

for a,b in p2:
   print(a,b)
   for c,d,e in p3:
      print(c,d,e)

第二个for循环(对于p3中的c,d,e)仅循环一次,而不会再次循环

1 个答案:

答案 0 :(得分:0)

仅需确定,由于缩进,第二个for循环在第一个循环的第一次运行内部中运行。也就是说,第一个循环运行print(a,b),然后第二个循环运行整个p3,然后才再次假定第一个循环。我相信这是您想要的,只是您希望第二个循环在p3上的每次迭代中再次在整个p2上再次运行。

问题在于permutations返回的 iterator iterable 不同,只能重复运行一次。因此,第二次尝试遍历p3时,没有更多元素要返回,实际上循环运行了,但是没有更多c,d,e可以打印。

编辑:

只需将其转换为list,例如将其转换为p3=list(permutations(list,3)),就可以将其转换为可迭代的。

尽管要更改使用保留关键字的list变量的名称,并且可能使用更惯用的名称,例如lst = range(9)或是否使用lst = [x for x in range(9)]