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

Python矩阵负数替换为正数 for循环遍历跳过中间值问题求解

矩阵负数替换问题修复方案

错误根因

你代码的核心问题是遍历列表的同时对列表执行增删操作,这会动态改变列表的元素索引,导致for循环迭代时跳过未处理的元素。
比如你遍历第一个子列表[-4, -7, -9]时,第一次取到元素-4,执行remove后列表变为[-7, -9],再append4后列表变为[-7, -9, 4],此时for循环会自动跳到下一个索引位置,直接跳过了当前索引0的-7,最终导致结果残留负数。同时你代码中的while逻辑冗余,重复判断了数值正负,且通过remove+append的方式修改元素效率极低。


修复方案

方案1:直接修改原矩阵(不改变元素顺序,无需增删列表)

通过索引遍历矩阵的每个元素,遇到负数直接取反修改对应位置的值即可:

def replaceNegatives(matrix):
    for i in range(len(matrix)):
        for j in range(len(matrix[i])):
            if matrix[i][j] < 0:
                matrix[i][j] = -matrix[i][j]
    return matrix

testMatrix = [[-4, -7, -9], [-2, -4, -6], [2, 4, -5]]
print(replaceNegatives(testMatrix))

运行输出:

[[4, 7, 9], [2, 4, 6], [2, 4, 5]]

方案2:生成新矩阵(不修改原输入矩阵,写法更简洁)

直接用列表推导式搭配内置abs()函数取绝对值,生成符合要求的新矩阵:

def replaceNegatives(matrix):
    return [[abs(num) for num in row] for row in matrix]

内容的提问来源于stack exchange,提问作者Janys02

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:10