如何获取列表最大值最小索引与最小值最大索引并比较?
解决列表中最大值最小索引与最小值最大索引的判断问题
你遇到的问题核心在于list.index()方法的特性:它只会返回第一个匹配目标值的索引,这就导致你无法拿到最小值的最后出现位置。下面给你两种直观的解决方案,帮你准确获取需要的索引:
方法一:利用列表反转与索引计算(简洁高效)
lijst = [2, 9, 15, 36, 36, 3, 2, 36] # 1. 获取最大值的最小索引(index()默认返回第一个匹配项,正好是最小索引) max_value = max(lijst) max_min_index = lijst.index(max_value) # 结果:3 # 2. 获取最小值的最大索引 min_value = min(lijst) # 反转列表后找到第一个匹配的索引,再转换为原列表的最后匹配位置 min_max_index = len(lijst) - 1 - lijst[::-1].index(min_value) # 结果:6 # 执行你的判断逻辑 if max_min_index <= min_max_index: print("最大值的最小索引 ≤ 最小值的最大索引") else: print("最大值的最小索引 > 最小值的最大索引")
方法二:用列表推导式收集所有索引(可读性更强)
如果你觉得反转的逻辑有点绕,也可以直接收集所有匹配值的索引,再按需取最大/最小值:
lijst = [2, 9, 15, 36, 36, 3, 2, 36] max_value = max(lijst) # 收集所有最大值的索引,取最小的那个(其实用index()更直接,这里是演示思路) max_indices = [i for i, val in enumerate(lijst) if val == max_value] max_min_index = min(max_indices) # 结果:3 min_value = min(lijst) # 收集所有最小值的索引,取最大的那个 min_indices = [i for i, val in enumerate(lijst) if val == min_value] min_max_index = max(min_indices) # 结果:6 # 判断逻辑 if max_min_index <= min_max_index: # 你的业务代码 pass
为什么原来的代码不行?
你的原代码中lijst.index(minimum)只会返回最小值第一次出现的索引(比如例子中的0),但你需要的是最小值最后一次出现的索引(例子中的6),所以这部分逻辑需要调整。而最大值的索引获取是没问题的,因为index()返回的第一个匹配项就是最小的索引。
内容的提问来源于stack exchange,提问作者Neri
相关产品推荐
相关产品推荐

