在Python中,将多个对象映射到列表中的每个对象的映射
可能是重复的问题:
在Python中将列表的列表变成一个平坦的列表
我该如何从一个列表,比如 [[1,2],[3,4]] 或者 [(1,2),(3,4)],创建出列表 [1,2,3,4] 呢?
使用列表推导式(或者 map、filter)似乎不能处理多个对象。
就像 C# 的 LINQ 中的 SelectMany 一样。
4 个回答
0
你想把这个列表变成一维的,也就是把里面的嵌套结构去掉,让它变得平坦。
[y for x in [[1,2],[3,4]] for y in x]
2
标准库真不错:
>>> import itertools
>>> l = [[1,2],[3,4]]
>>> list(itertools.chain(*l))
[1, 2, 3, 4]
0
如果你知道这个列表的深度正好是2层,你可以这样做:
[j for i in [[1,2],[3,4]] for j in i]
在这里,你用 i
来遍历这个列表,i
依次会得到 [1,2]
和 [3,4]
这两个子列表,然后再用 j
来遍历这些子列表。这样最终的结果就是 [1, 2, 3, 4]
。