Python:如何获得列表集的所有有序组合

Gre*_*een 0 python iteration

假设我有以下列表:

a = [1, 2, 3]
b = [11, 12, 13]
c = [111, 112, 113]
Run Code Online (Sandbox Code Playgroud)

我希望得到以下输出

[1,2,3]
[1,2,13]
[1,2,113]
[1,12,3]
[1, 12, 13]
[1, 12, 113]
[1,112,3]
[1,112,13]
[1, 112, 113]
[11,2,3]
[11, 2, 13]
[11, 2, 113]
[11, 12, 3]
[11, 12, 13]
[11, 12, 113]
[11, 112, 3]
[11, 112, 13]
[11, 112, 113]
...
Run Code Online (Sandbox Code Playgroud)

因此,我希望有一个函数可以为我提供所有列表组合,这些组合是一个集合中某些成员的选择,其中顺序被忽略 - 当它们中的每个元素保持其原始列表的索引时的一组列表.

我查看了所有选项itertools,但没有找到任何解决方案.

Thi*_*lle 6

zip使用前只需列出您的清单product:

from itertools import product

a = [1, 2, 3]
b = [11, 12, 13]
c = [111, 112, 113]

for p in product(*(zip(a, b, c))):
    print(p)
Run Code Online (Sandbox Code Playgroud)

输出:

(1, 2, 3)
(1, 2, 13)
(1, 2, 113)
(1, 12, 3)
(1, 12, 13)
(1, 12, 113)
(1, 112, 3)
(1, 112, 13)
(1, 112, 113)
(11, 2, 3)
(11, 2, 13)
(11, 2, 113)
(11, 12, 3)
....
Run Code Online (Sandbox Code Playgroud)

回答你的评论:输出zip是:

print(list(zip(a, b, c)))
#  [(1, 11, 111), (2, 12, 112), (3, 13, 113)]
Run Code Online (Sandbox Code Playgroud)

然后product通过在这3个元组中的每一个中取一个值来生成其输出.