Python循环查找列表最大值索引输出重复结果问题排查
代码问题分析
- 核心问题出在
list.index()方法的行为上:该方法只会返回列表中第一个和查询值匹配的元素的索引。当你遍历到索引4位置的41.0时,调用vl.index(x)依旧会返回第一个匹配的索引2,不会返回当前元素的实际索引,所以最终得到重复的2。 - 额外优化点:你在循环的判断逻辑里每次都执行
max(vl)计算最大值,属于重复计算,不会影响结果但会降低运行效率,建议提前把最大值计算好存储到变量中复用。
正确实现参考
vl = [40.08, 36.6, 41.0, 35.2, 41.0] indices = [] max_val = max(vl) # 提前计算最大值,避免循环内重复计算 for idx, x in enumerate(vl): # 同时遍历索引和元素值 if x == max_val: indices.append(idx) # 直接存入当前遍历到的索引,不需要再查index print(indices) # 输出 [2, 4]
内容的提问来源于stack exchange,提问作者Spandana Gollapalli
相关产品推荐
相关产品推荐

