在python中遍历压缩输入

时间:2017-06-30 20:22:22

标签: python python-3.x hashmap nested-lists

我以嵌套列表的形式输入用户输入。我想用它组合,它如下所示:

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

我没有得到如何使用词典或地图来实现这样的组合,或者如果有其他方法可以这样做,请建议。

2 个答案:

答案 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])