我需要能够在各种列表上执行嵌套循环,例如:
A = [1,2,3]
B = [1,2,3]
C = [1,2,3]
for a in A:
for b in B:
for c in C:
#do something
我希望有一些代码能够获取[A]+[B]+[C]
给出的列表列表并循环遍历每个样本路径(即与上述嵌套循环相同的事情)。
如果这段代码占用了2行或3行,这是可以的,因为在我的真实世界的例子中,我不仅仅是A,B,C
而且还有D,E,F,G,...
所以如上所述做一个嵌套循环太繁琐了。
答案 0 :(得分:2)
您正在寻找三个列表中的产品;使用itertools.product()
可以将三个嵌套循环折叠为:
from itertools import product
for a, b, c in product(A, B, C):
因为A == B == C
在这里,您可以进一步简化为:
for a, b, c in product(A, repeat=3):
如果您有多个列表来生成产品,请将它们放在一个列表中,这样您就可以生成可变数量的输入列表的产品:
lists = [A, B, C, D, E]
for combination in product(*lists):
答案 1 :(得分:1)
你想要一个来自itertools的笛卡尔积:
from itertools import product
for x in product(A,B,C):
print x