You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用切片方法提取嵌套列表中每个子项的第一个列表?

提取嵌套列表中每个子列表的第一个元素

嘿,这事儿其实挺简单的,我给你几种实用的方法来实现你想要的效果:

首先先明确你的原列表:

l = [[[0, 1, 1, 0, 0, 0, 2, 1, 2, 0, 1, 2], [0.0]], [[1, 1, 0, 2, 0, 0, 0, 1, 2, 1, 2, 2], [0.0]], [[0, 2, 2, 1, 2, 1, 0, 2, 2, 2, 1, 0], [0.0]], [[1, 1, 0, 1, 2, 2, 2, 2, 0, 0, 2, 2], [0.0]], [[1, 2, 2, 0, 0, 2, 1, 1, 1, 2, 1, 0], [0.0]], [[0, 2, 1, 2, 0, 1, 2, 1, 1, 2, 2, 2], [0.0]], [[0, 0, 2, 0, 0, 1, 1, 1, 1, 0, 0, 2], [0.0]], [[0, 2, 1, 2, 2, 0, 0, 0, 0, 0, 1, 2], [0.0]], [[1, 1, 1, 2, 1, 2, 2, 1, 0, 2, 0, 2], [0.0]], [[0, 1, 1, 0, 0, 0, 1, 2, 1, 0, 1, 0], [0.0]]]

方法1:列表推导式(最推荐,Pythonic写法)

这是Python里处理这类问题最简洁高效的方式,一行代码搞定:

l1 = [sublist[0] for sublist in l]

它的逻辑很直观:遍历原列表l中的每一个子列表sublist,提取每个子列表的第一个元素(索引为0的位置),然后把这些元素自动收集成新列表l1,完全符合你的期望结果。

方法2:使用map函数

如果你习惯函数式编程的风格,也可以用map结合匿名函数来实现:

l1 = list(map(lambda x: x[0], l))

map函数会把lambda x: x[0]这个匿名函数应用到l的每一个元素上,提取第一个元素,最后通过list()把结果转换成列表即可。

方法3:普通循环(适合新手理解)

如果想要更直观的步骤,用基础的循环+追加元素的方式也完全可行:

l1 = []
for sublist in l:
    l1.append(sublist[0])

这种写法一步步执行:先初始化一个空列表l1,然后遍历原列表的每个子列表,把每个子列表的第一个元素添加到l1里,逻辑清晰,容易上手。

以上三种方法最终得到的l1都是你想要的结果:

[[0, 1, 1, 0, 0, 0, 2, 1, 2, 0, 1, 2], [1, 1, 0, 2, 0, 0, 0, 1, 2, 1, 2, 2], [0, 2, 2, 1, 2, 1, 0, 2, 2, 2, 1, 0], [1, 1, 0, 1, 2, 2, 2, 2, 0, 0, 2, 2], [1, 2, 2, 0, 0, 2, 1, 1, 1, 2, 1, 0], [0, 2, 1, 2, 0, 1, 2, 1, 1, 2, 2, 2], [0, 0, 2, 0, 0, 1, 1, 1, 1, 0, 0, 2], [0, 2, 1, 2, 2, 0, 0, 0, 0, 0, 1, 2], [1, 1, 1, 2, 1, 2, 2, 1, 0, 2, 0, 2], [0, 1, 1, 0, 0, 0, 1, 2, 1, 0, 1, 0]]

内容的提问来源于stack exchange,提问作者K_ Douli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:47:10