我有一个嵌套循环来创建一组共轭动词中的所有组合。旨在获得动词,人和时态的所有可能组合,例如[['to be', 'first person singular', 'future'],['to be', 'second person singular', 'future'], ...]
。
for v in verbs:
for p in persons:
for t in tenses:
return [v, p, t]
是否有办法减少嵌套,可能使用itertools
?
答案 0 :(得分:13)
for v, p, t in itertools.product(verbs, persons, tenses):
...
答案 1 :(得分:2)
您可以使用itertools.product
执行此任务:
输入可迭代的笛卡尔积。等效于生成器表达式中的嵌套for循环。例如,对于B中的y,乘积(A,B)的返回值与(x中的x的(x,y)相同)。
a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
import itertools
for p in itertools.product(a,b,c):
print(p)
替代方案是列表理解表达式:
for p in [(x,y,z) for x in a for y in b for z in c]:
print(p)