说我有以下列表:
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
中的所有选项,但没有找到任何解决方案。
答案 0 :(得分: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)
输出:
(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
将通过在这三个元组的每一个中取一个值来生成其输出。
答案 1 :(得分:0)
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])
这会帮助我猜