我已经从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)仅循环一次,而不会再次循环
答案 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)]
。