如何获取Python整数数组中最值的首个索引?
找到整数数组中最值的第一个索引
嗨,我来帮你搞定这个问题!你的原代码会输出所有等于最大值或最小值的索引,而我们需要的是第一个最小值和第一个最大值的索引,对吧?
问题分析
原代码遍历数组时,只要元素等于最值就打印索引,所以会把所有匹配项都输出。我们需要的是只捕获每个最值第一次出现的位置,不用管后续的重复值。
简洁解决方案:使用list.index()方法
Python的列表方法index()正好能满足需求,它会返回列表中第一个匹配指定值的索引。代码实现如下:
A = [1,1,8,7,5,9,6,9] def minmaxloc(num_list): # 先获取数组的最小值和最大值 min_val = min(num_list) max_val = max(num_list) # 找到第一个最小值和最大值的索引 first_min_idx = num_list.index(min_val) first_max_idx = num_list.index(max_val) # 返回元组形式的结果 return (first_min_idx, first_max_idx) # 调用函数并打印结果 print(minmaxloc(A)) # 输出:(0, 5)
手动遍历实现(更灵活)
如果你想自己手动遍历数组来实现(比如需要更复杂的逻辑),可以在找到第一个最值后就停止追踪该值,甚至提前终止循环提升效率:
A = [1,1,8,7,5,9,6,9] def minmaxloc(num_list): min_val = min(num_list) max_val = max(num_list) first_min_idx = None first_max_idx = None for idx, val in enumerate(num_list): # 只记录第一个最小值的索引 if first_min_idx is None and val == min_val: first_min_idx = idx # 只记录第一个最大值的索引 if first_max_idx is None and val == max_val: first_max_idx = idx # 两个索引都找到后,提前退出循环 if first_min_idx is not None and first_max_idx is not None: break return (first_min_idx, first_max_idx) print(minmaxloc(A)) # 输出:(0, 5)
这样修改后,就能精准返回你想要的第一个最小值索引0和第一个最大值索引5啦!
内容的提问来源于stack exchange,提问作者bryan tetris
相关产品推荐
相关产品推荐

