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

Python嵌套列表条件筛选:如何保留完整子列表?

修复列表推导式索引越界,筛选完整子列表

你的报错原因很直接:当子列表长度只有1时(比如['id2']),访问i[1]会触发索引越界——因为它根本没有第二个元素。

完全有单行的修复方案,不用单独写for循环,给你两种思路:

1. 保留原判断逻辑(筛选有第二个元素且该元素为真的子列表)

先判断子列表长度足够,再检查第二个元素:

new_data = [i for i in data if len(i) >= 2 and i[1]]

这样会先确保子列表至少有2个元素,避免索引越界,再验证第二个元素是否为真(和你最初的逻辑一致,比如示例里的1会被判定为真)。

2. 仅筛选长度恰好为2的子列表

如果你的需求只是要所有包含两个元素的子列表,不管第二个元素是什么,直接判断长度即可:

new_data = [i for i in data if len(i) == 2]

用你的示例data测试,两种写法都能得到期望的输出:

[
['id1',1],
['id5',1]
]

内容的提问来源于stack exchange,提问作者Arash Howaida

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:46:13