说我有三个列表:
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'], ...
换句话说,我想确保排列尊重每个原始列表中存在的顺序。我确定必须有一个简单的方法,但我似乎无法找到它。
提前致谢!
答案 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')]