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

2024-04-19 22:07:38 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下列表:

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

我想得到以下输出

[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]
...

因此,我想有一个函数,它将给我所有的列表组合,这是一个集合中的一些成员的选择,其中的顺序被忽略-一组列表,当其中的每个元素保持其索引从原始列表。你知道吗

我检查了itertools中的所有选项,没有找到任何解决方案。你知道吗


Tags: 函数元素列表顺序选项成员解决方案itertools
2条回答
 a = [1, 2, 3]
 b = [11, 12, 13]
 c = [111, 112, 113]
 d=[]
 for i in range(3):
     d.append((a[i],b[i],c[i]))
 print(d)
 for i in range(len(d)):
     for k in range(3):
         for j in range(3):
             print(d[0][i],d[1][k],d[2][j])

我想这会有帮助的

在使用product之前,只需zip您的列表:

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)

输出:

(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)
....

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

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

然后product将通过在这3个元组中的每个元组中取一个值来生成其输出。你知道吗

相关问题 更多 >