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

Python中提取嵌套列表子列表元素并解决TypeError报错问题

解决嵌套列表拆分的报错问题

嘿,我来帮你搞定这个问题!首先咱们先搞清楚你为啥会报错:

你写的双层循环里,内层的i其实是子列表里的单个元素——比如第一个子列表里的1633425661439或者0.11643042583898743,这些都是整数或浮点数类型,根本不能用i[0]这种下标方式去访问,这就是TypeError: 'int' object is not subscriptable报错的根源。

接下来给你几种正确的实现方式:

方式一:单层循环(最直观)

先初始化两个空列表,然后遍历原列表的每个子列表,直接提取对应位置的元素:

# 注意:尽量不要用list作为变量名,它是Python内置类型
original_list = [[1633425661439, 0.11643042583898743], [1633428739018, 0.11682454707026001], [1633432086311, 0.11950356856187618]]
new_list1 = []
new_list2 = []

for sub_list in original_list:
    new_list1.append(sub_list[0])
    new_list2.append(sub_list[1])

print(new_list1)
print(new_list2)

运行后就能得到你想要的两个列表啦。

方式二:列表推导式(更Pythonic)

如果想让代码更简洁,可以用列表推导式一行搞定:

original_list = [[1633425661439, 0.11643042583898743], [1633428739018, 0.11682454707026001], [1633432086311, 0.11950356856187618]]
new_list1 = [sub[0] for sub in original_list]
new_list2 = [sub[1] for sub in original_list]

这种写法既简洁又易读,很适合处理这类简单的列表转换需求。

方式三:用zip函数快速拆分

如果你想一次性完成拆分,zip函数是个好选择:

original_list = [[1633425661439, 0.11643042583898743], [1633428739018, 0.11682454707026001], [1633432086311, 0.11950356856187618]]
new_list1, new_list2 = zip(*original_list)
# 注意zip返回的是元组,如果你需要列表类型,转一下就行
new_list1 = list(new_list1)
new_list2 = list(new_list2)

这种方式效率很高,尤其当原列表元素很多的时候优势更明显。

另外提醒一下:尽量不要用list作为变量名哦,它是Python的内置类型,用它做变量名会覆盖掉内置功能,容易引发其他问题~

内容的提问来源于stack exchange,提问作者Luiz Scheuer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:37:50