Yuv*_*dam 2 python list-comprehension generator
考虑一个元组v = (a,b,c)和一个生成器函数generate(x),它从元组接收一个项目并为每个项目生成几个选项.
什么是pythonic方法生成一组generate(x)元组中每个项目的结果的所有可能组合?
我能做到这一点:
v = (a,b,c)
for d in generate(v[0]):
for e in generate(v[1]):
for f in generate(v[2]):
print d,e,f
Run Code Online (Sandbox Code Playgroud)
但那只是丑陋的,而且我需要一个通用的解决方案.
Python 2.6具有itertools.product()执行您想要的功能:
import itertools
v = (a, b, c)
for d, e, f in itertools.product(*(generate(x) for x in v)):
print d, e, f
Run Code Online (Sandbox Code Playgroud)
来自文档:
输入迭代的笛卡儿乘积.
等效于生成器表达式中的嵌套for循环.例如,乘积(A,B)与A中的x的((x,y)相同,对于B中的y,返回相同的值).