假设我有以下列表:
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,但没有找到任何解决方案.
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个元组中的每一个中取一个值来生成其输出.
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |