首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python生成一个格

使用python生成一个格
EN

Stack Overflow用户
提问于 2014-04-11 12:44:37
回答 3查看 557关注 0票数 3

如何生成类似于

代码语言:javascript
复制
[(), (1,), (1,2), (1,2,3)..., (1,2,3,...n)]

代码语言:javascript
复制
[(), (4,), (4,5), (4,5,6)..., (4,5,6,...m)]

然后把他们的产品合并到

代码语言:javascript
复制
[(), (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测试过的产品,我只是不能将元组的组合合并成一个。

你知道怎么把这件事做得干净吗?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-11 12:49:52

请注意,单个元素元组的表示方式类似于这个(1,)

代码语言:javascript
复制
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

输出

代码语言:javascript
复制
()
(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)

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

代码语言:javascript
复制
from itertools import product
print [sum(items, ()) for items in product(a, b)]

或者更简单,

代码语言:javascript
复制
print [items[0] + items[1] for items in product(a, b)]
票数 1
EN

Stack Overflow用户

发布于 2014-04-11 13:02:23

如果您不想使用任何特殊的导入:

代码语言:javascript
复制
start = 1; limit = 10
[ range(start, start + x) for x in range(limit) ]

对于start = 1,输出是:

[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6, 7], [1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7, 8, 9]]

如果您想使用该产品,也许使用itertools可能是最优雅的。

票数 0
EN

Stack Overflow用户

发布于 2014-04-11 13:02:44

你可以这样做,

代码语言:javascript
复制
>>> a=[(), (1,), (1,2), (1,2,3)]
>>> b=[(), (4,), (4,5), (4,5,6)]
>>> for ix in a:
...   for iy in b:
...      print ix + iy
... 
()
(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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23012931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档