You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:48:24