Python中如何查找嵌套列表中指定元素的索引
嵌套列表中查找指定元素索引的简洁实现
你需要在嵌套列表(包括已有和新增的)中查找指定元素的索引,支持遍历所有子列表或指定子列表,下面是更简洁的实现方式:
通用函数实现
用函数封装逻辑,一次搞定两种查找场景,新增嵌套列表直接传入函数即可使用:
def find_item_indices(nested_list, target, specific_list=None): result = [] # 确定要遍历的子列表:指定索引或全部 if specific_list is not None: sub_lists = [(specific_list, nested_list[specific_list])] else: sub_lists = enumerate(nested_list) for sub_idx, sub_list in sub_lists: # 用列表推导式快速找出当前子列表中所有目标元素的索引 item_indices = [idx for idx, item in enumerate(sub_list) if item == target] if item_indices: result.append([sub_idx, item_indices]) return result # 测试示例 main_list = [[0, 1, 1, 3], [1, 'b', 'c', 'd'], [0, 'b', 1, 'd']] find_item = 'b' # 1. 查找所有子列表中的元素索引 all_results = find_item_indices(main_list, find_item) print("所有子列表的索引结果:", all_results) print("所有元素的索引集合:", [item[1] for item in all_results]) # 2. 查找指定子列表(索引为1)中的元素索引 specific_results = find_item_indices(main_list, find_item, specific_list=1) print("指定子列表的索引结果:", specific_results)
优势说明
- 简洁高效:用列表推导式替代多层嵌套循环,代码量大幅减少,逻辑更直观
- 通用性强:支持两种查找模式,新增嵌套列表时直接传入函数就能得到结果,不用修改核心逻辑
- 结果清晰:只返回包含目标元素的子列表信息,避免空列表干扰,返回格式统一为
[子列表索引, [元素索引列表]]
新增子列表后的使用示例
如果后续给嵌套列表添加新的子列表,直接调用函数即可:
# 新增子列表 main_list.append(['x', 'b', 'y']) new_results = find_item_indices(main_list, find_item) print("新增子列表后的结果:", new_results)
内容的提问来源于stack exchange,提问作者qeohoa
相关产品推荐
相关产品推荐

