python - 使用python生成格子

标签 python python-itertools

如何生成类似的东西

[(), (1,), (1,2), (1,2,3)..., (1,2,3,...n)]

[(), (4,), (4,5), (4,5,6)..., (4,5,6,...m)]

然后取它们的乘积并合并到

[(), (1,), (1,4), (1,4,5), (1,4,5,6), (1,2), (1,2,4)....(1,2,3,...n,4,5,6,...m)]

?

对于前两个列表,我尝试了 https://docs.python.org/2/library/itertools.html#recipes 中的 powerset 配方, 但会有一些我不想要的东西,比如 (1,3), (2,3)

对于我用 chainproduct 测试过的产品,但我无法将元组的组合合并为一个。

知道如何做到这一点吗?谢谢!

最佳答案

请注意,单元素元组表示为 (1,)

a = [(), (1,), (1, 2), (1, 2, 3)]
b = [(), (4,), (4, 5), (4, 5, 6)]

from itertools import product
for item1, item2 in product(a, b):
    print item1 + item2

输出

()
(4,)
(4, 5)
(4, 5, 6)
(1,)
(1, 4)
(1, 4, 5)
(1, 4, 5, 6)
(1, 2)
(1, 2, 4)
(1, 2, 4, 5)
(1, 2, 4, 5, 6)
(1, 2, 3)
(1, 2, 3, 4)
(1, 2, 3, 4, 5)
(1, 2, 3, 4, 5, 6)

如果你想把它们放在一个列表中,你可以像这样使用列表理解

from itertools import product
print [sum(items, ()) for items in product(a, b)]

或者更简单,

print [items[0] + items[1] for items in product(a, b)]

关于python - 使用python生成格子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23012931/

相关文章:

python - 将列表作为嵌套列表,在单独列表中包含连续元素

python - 如何对 CSV 中的唯一 COL2 和 COL3 值中的唯一 COL1 值进行分组

python - 如何生成预解压列表?

python - 当键值在iterable的元素中时,如何使用itertools.groupby?

python - python 中 itertools.product 的最小值

python itertools 组合可扩展性

python - 从 Keras 检查点加载

python - 更改 IPython 解释器

python - 将 pandas 数据框列中的单词按另一列分组以获得频率/计数

python - 使用 python 将纯 JSON 发送到 gRPC 服务器