如何获取列表中最后一个最小值的索引?
解决获取列表最后一个最小值索引的问题
你的代码问题出在判断逻辑和语法细节上:
- 原判断条件
rain_data[val] < min_value只会在当前元素小于已记录的最小值时更新索引,遇到和最小值相等的元素不会触发更新,所以第一个最小值的索引会被保留到循环结束。 - 函数定义
def minimum(rain_data)末尾缺少冒号,属于语法错误。
修改方案很简单,把判断条件改成<=,这样每次遇到小于等于当前最小值的元素时,都会更新最小值和索引,遍历完成后就能得到最后一个最小值的索引。同时补全函数语法,并添加函数调用:
rain_data = [33, 57, 60, 55, 53, 33] min_value = rain_data[0] min_index = 0 def minimum(rain_data): global min_value, min_index # 声明使用全局变量 for val in range(len(rain_data)): if rain_data[val] <= min_value: # 修改为<=,匹配相等的最小值 min_value = rain_data[val] min_index = val minimum(rain_data) # 调用函数 print(min_value) print(min_index) results = (float(min_value) , min_index)
如果不想用全局变量,更推荐把最小值和索引的初始化放到函数内部,让函数直接返回结果,符合函数封装的规范:
rain_data = [33, 57, 60, 55, 53, 33] def minimum(rain_data): min_value = rain_data[0] min_index = 0 for val in range(len(rain_data)): if rain_data[val] <= min_value: min_value = rain_data[val] min_index = val return (float(min_value), min_index) results = minimum(rain_data) print(results[0]) print(results[1])
运行后就能得到最小值33和它的最后一个索引5。
内容的提问来源于stack exchange,提问作者Lalies
相关产品推荐
相关产品推荐

