【发布时间】:2011-08-10 15:55:11
【问题描述】:
如何从列表中创建例如 [[1,2],[3,4]] 或 [(1,2),(3,4)] 列表 [1,2,3,4]
列表理解(或映射、过滤器)似乎没有将映射对象映射到多个其他对象。
类似于 C# 的 LINQ 中的 SelectMany
【问题讨论】:
如何从列表中创建例如 [[1,2],[3,4]] 或 [(1,2),(3,4)] 列表 [1,2,3,4]
列表理解(或映射、过滤器)似乎没有将映射对象映射到多个其他对象。
类似于 C# 的 LINQ 中的 SelectMany
【问题讨论】:
标准库很酷:
>>> import itertools
>>> l = [[1,2],[3,4]]
>>> list(itertools.chain(*l))
[1, 2, 3, 4]
【讨论】:
只要你知道它的深度正好是 2 层,你就可以做到
[j for i in [[1,2],[3,4]] for j in i]
在列表中使用i 进行迭代,依次为i 提供值[1,2] 和[3,4],并在这些子列表中使用j。因此这个表达式的结果是[1, 2, 3, 4]。
【讨论】:
您想要展平列表。
[y for x in [[1,2],[3,4]] for y in x]
【讨论】:
>>l=[1,2,3,4]
>>zip(l[:2:],l[1:][:2:])
[(1, 2), (2, 3)]
>>l=[(1, 2), (2, 3)]
>>sum(l,())
(1, 2, 2, 3)
这不仅仅是你需要的吗?
【讨论】: