我以嵌套列表的形式输入用户输入。我想用它组合,它如下所示:
Input: [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
在python中使用zip函数压缩它,以便遍历很容易。
Zipped Output [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
Tree structure to be traversed ex:
1
/ | \
2 5 8
/ | \ /| \ / | \
3 6 9 3 6 9 3 6 9
预期的输出
1,2,3
1,2,6
1,2,9
1,5,3
1,5,6
1,5,9
...
...
7,8,9
我没有得到如何使用词典或地图来实现这样的组合,或者如果有其他方法可以这样做,请建议。
答案 0 :(得分:2)
您可以使用itertools.product
功能:
from itertools import product
l = [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
for p in product(*l):
print(p)
输出:
(1, 2, 3)
(1, 2, 6)
(1, 2, 9)
(1, 5, 3)
(1, 5, 6)
(1, 5, 9)
...
(7, 8, 9)
调用这样的函数(没有任何额外的参数)返回3"集"的笛卡尔积。
答案 1 :(得分:2)
人们可能会像Hunter McMillen所评论的那样向你介绍itertools。您可以从他提供的网站找到更好的解决方案。
这是一个简单的代码也可以完成同样的工作。
A = l = [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
for i in A[0]:
for j in A[1]:
for k in A[2]:
print([i, j, k])