在Python中,将多个对象映射到列表中的每个对象的映射

0 投票
4 回答
922 浏览
提问于 2025-04-16 23:18

可能是重复的问题:
在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]

撰写回答