严格按照python

时间:2016-07-02 20:28:41

标签: python itertools

说我有三个列表:

list_1 = ['hello1', 'world1', 'foo1']
list_2 = ['hello2', 'world2', 'foo2']
list_3 = ['hello3', 'world3', 'foo3']

是否可以通过例如itertools.combinations()或itertools.permutations实现 - 只返回以下组合:

combs = ['hello1', 'world1', 'foo1'], ['hello1', 'world2', foo1'], ...
['hello1', 'world1', foo2'], ... ['hello3', 'world2', foo2'], ...

换句话说,我想确保排列尊重每个原始列表中存在的顺序。我确定必须有一个简单的方法,但我似乎无法找到它。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以使用itertools.product()

>>> import itertools as it
>>> list(it.product(*zip(list_1, list_2, list_3)))
[('hello1', 'world1', 'foo1'),
 ('hello1', 'world1', 'foo2'),
 ('hello1', 'world1', 'foo3'),
 ('hello1', 'world2', 'foo1'),
 ...
 ('hello3', 'world3', 'foo1'),
 ('hello3', 'world3', 'foo2'),
 ('hello3', 'world3', 'foo3')]