如何获取列表中多次出现的指定值的全部索引位置
实现获取列表中1-30每个数值所有出现索引的方案
推荐优先使用单次遍历统计的方案,时间复杂度最低,仅需遍历一次原列表即可完成所有数值的索引收集:
# 替换为你的实际长列表 source_list = [3, 1, 15, 30, 2, 3, 1, ...] # 初始化结果字典,1-30每个数值初始对应空列表 index_map = {num: [] for num in range(1, 31)} # 遍历列表同时收集索引 for idx, value in enumerate(source_list): index_map[value].append(idx)
运行完成后,index_map[数值]即可直接取出对应数值的所有出现位置索引。
如果你坚持要基于index()方法实现,可以通过指定查找起始位置的方式获取所有匹配项,该方案需要多次遍历列表,效率低于上述方案,仅适合短列表场景:
source_list = [3, 1, 15, 30, 2, 3, 1, ...] index_map = {} for target_num in range(1, 31): positions = [] search_start = 0 while True: try: # 从search_start位置开始查找目标值 current_pos = source_list.index(target_num, search_start) positions.append(current_pos) # 下一次从当前位置的下一位开始查找 search_start = current_pos + 1 except ValueError: # 找不到目标值时跳出循环 break index_map[target_num] = positions
内容的提问来源于stack exchange,提问作者David H
相关产品推荐
相关产品推荐

