【问题标题】:Traverse zipped input in python在python中遍历压缩输入
【发布时间】:2017-06-30 20:22:21
【问题描述】:

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

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

我不知道如何使用字典或地图来实现这种组合,或者如果有其他方法可以做到这一点,请提出建议。

【问题讨论】:

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


【解决方案1】:

你可以使用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 个“集合”的笛卡尔积。

【讨论】:

  • 感谢您的解决方案!
【解决方案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])

【讨论】:

  • 感谢解决!!他提供的解决方案比较通用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
相关资源
最近更新 更多