输入:
pos_1= 'AVNMHDRW'
pos_2= 'KNTHDYBW'
pos_3= 'KVNGSDRB'
尝试使用pos_1中的一个项目找到所有可能的三元组,一个来自pos_2,一个来自pos_3
我想弄清楚如何使用itertools.product(*),但我有点困惑
最后,我想创建一个包含所有不同可能性的列表(或生成器对象),从pos_1中取一个,然后从pos_2取一个,然后从pos_3取一个
示例输出:
'AKK','ANV','WWB'
pos_1代表位置1,依此类推pos_2和pos_3。
简单:
itertools.product(pos_1, pos_2, pos_3)
这可以迭代;如果你想要一个列表,只需将它传递给list
。
究竟是什么问题?
编辑:这会生成每个源的项目元组。如果要将它们连接回字符串,可以在迭代时手动执行:
for a, b, c in itertools.product(pos_1, pos_2, pos_3):
do_something_with(a + b + c)
或者要创建列表,您可以使用列表推导:
[a + b + c for a, b, c in itertools.product(pos_1, pos_2, pos_3)]
看到这个答案:In python is ther a concise way to a list comprehension with multiple iterators。
在你的情况下:
triples = [ a+b+c for a in pos_1 for b in pos_2 for c in pos_3 ]
您可以使用生成器表达式生成此类生成器
g = (v1+v2+v3 for v1 in pos_1 for v2 in pos_2 for v3 in pos_3)