Python嵌套列表中如何仅检查子列表指定位置的元素是否存在
嵌套列表指定位置元素校验实现
基础信息
给定初始嵌套列表:
ini_list = [[1, 2, 5, 10, 7], [4, 3, 4, 3, 21], [45, 65, 8, 8, 9]]
需求说明:
- 校验目标元素:
4 - 校验规则:检查该元素是否存在于任意子列表的第3个元素位置
- 示例预期结果:第二个子列表
[4, 3, 4, 3, 21]的第3个元素为4,符合匹配要求,最终返回True
原有实现的问题
现有代码写法:
elem_to_find = 4 res1 = any(elem_to_find in sublist for sublist in ini_list)
该写法的缺陷:遍历单个子列表时会匹配全部元素,没有限定检查的位置,无法满足“仅校验第3个元素位置”的要求。
正确实现方案
Python列表的索引从0开始计数,日常表述的“第3个元素”对应索引值为2,调整后的代码如下:
elem_to_find = 4 res = any( sublist[2] == elem_to_find for sublist in ini_list if len(sublist) >= 3 # 规避子列表长度不足3位时的索引越界报错 )
实现逻辑说明:
- 全程不遍历子列表的其他元素,仅定位到第3个位置做值匹配,完全匹配校验规则
- 增加子列表长度判断的分支,提升代码健壮性,避免非预期的运行报错
- 对给定示例运行时,提取到的所有子列表第3个元素依次为
5、4、8,匹配到目标值4,最终返回True
内容的提问来源于stack exchange,提问作者Cat Hariss
相关产品推荐
相关产品推荐

