Python 简单嵌套循环的失败
我正在实现一个嵌套的for循环,其内部for循环是关于通过组合进行循环。然而,我不明白为什么这不起作用Python 简单嵌套循环的失败,python,loops,Python,Loops,我正在实现一个嵌套的for循环,其内部for循环是关于通过组合进行循环。然而,我不明白为什么这不起作用 import numpy as np from itertools import combinations comb = combinations(range(0, 3), 2) for i in range(0, 2): for j in comb: print(i, j) 输出为: 0 (0, 1) 0 (0, 2) 0 (1, 2) 它没有循环外部循环…但是,
import numpy as np
from itertools import combinations
comb = combinations(range(0, 3), 2)
for i in range(0, 2):
for j in comb:
print(i, j)
输出为:
0 (0, 1)
0 (0, 2)
0 (1, 2)
它没有循环外部循环…但是,如果它不是组合,它将按预期工作
for i in range(0, 2):
for j in range(0, 2):
print(i, j)
结果是:
0 0
0 1
1 0
1 1
我是否遗漏了组合的一些重要属性?我不明白为什么这不起作用……很抱歉,如果这是一个愚蠢的问题,任何帮助都将不胜感激,谢谢。您可以先转换为列表
from itertools import combinations
comb = list(combinations(range(0, 3), 2))
for i in range(0, 2):
for j in comb:
print(i, j)
结果
0 (0, 1)
0 (0, 2)
0 (1, 2)
1 (0, 1)
1 (0, 2)
1 (1, 2)
我想你要找的不是
组合
,而是产品
。下面的代码应该可以工作
from itertools import product
prod = product(range(0, 2), repeat = 2)
for i, j in prod:
print(i, j)
输出:
0 0
0 1
1 0
1 1
您已经在第一次调用中耗尽了
组合
迭代器loop@AndrewAllen谢谢你的帮助,这是否意味着我应该在每个循环中创建组合?我不明白你的问题是什么。请你将预期的输入
和输出
添加到问题中。我的目标是在每个循环中重复使用组合
,andrew回答了我的问题!谢谢你们,伙计,非常感谢!我以前不知道迭代器可能会耗尽。没有问题,你也可以对j进行组合(范围(0,3),2):并跳过comb
定义非常感谢你的回答,它实际上也很有用。但在我的应用程序中,组合更适合我的需要:D