Python求助:将数组中最大值与最小值间的元素替换为100
Python数组替换:把最大值和最小值位置之间的元素改成100
核心思路
先找到数组里最大值、最小值的位置,然后把这两个位置之间的所有元素(不包含最大值、最小值本身)替换成100。
代码实现(对应你的示例)
# 原数组 original_arr = [1, 5, 2, 3, -1, 3] # 1. 获取数组的最大值和最小值 max_val = max(original_arr) min_val = min(original_arr) # 2. 找到最大值、最小值第一次出现的索引 max_index = original_arr.index(max_val) min_index = original_arr.index(min_val) # 3. 确定要替换的索引范围(排除最大值、最小值本身) start_idx = min(max_index, min_index) + 1 end_idx = max(max_index, min_index) # 4. 复制原数组并替换元素(避免修改原数组) new_arr = original_arr.copy() for i in range(start_idx, end_idx): new_arr[i] = 100 # 输出结果 print(new_arr) # 打印: [1, 5, 100, 100, -1, 3]
关键步骤解释
max()/min():Python内置快捷函数,直接拿到数组的最大、最小值,不用自己写循环判断list.index(val):返回元素在数组中第一次出现的位置索引start_idx和end_idx:不管最大值在最小值前面还是后面,都能通过min()/max()确定替换范围的首尾,+1是为了跳过最大值/最小值本身list.copy():新手容易犯的错是直接写new_arr = original_arr,这会让两个变量指向同一个数组,修改new_arr时原数组也会变,用copy()能生成独立的新数组
扩展:处理多重复值的情况
如果数组里有多个最大值或最小值,比如[5, 2, 5, -1, 3, -1],要是想取最后一次出现的最大值/最小值,可以用下面的方法获取索引:
# 获取最大值最后一次出现的索引 last_max_idx = len(original_arr) - 1 - original_arr[::-1].index(max_val) # 获取最小值最后一次出现的索引 last_min_idx = len(original_arr) - 1 - original_arr[::-1].index(min_val)
把前面代码里的max_index/min_index换成上面的变量,就能基于最后一次出现的位置来替换元素了。
内容的提问来源于stack exchange,提问作者POG MEE
相关产品推荐
相关产品推荐

