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

矩阵置零问题:如何用一行代码将矩阵整列设为0?

解决矩阵整列置0的问题

你代码里的A[0:r][j]=[0][j]确实有问题——A[0:r]会生成原矩阵的一个临时切片副本,修改这个副本根本不会影响原矩阵;而且[0][j]只有当j=0时有效,j大于0时直接会触发索引越界错误。

要正确把矩阵的某一列(比如第j列)全部设为0,最直接的方式是遍历矩阵的每一行,将该行对应列的元素单独设为0,核心代码如下:

# 把第j列全部置为0
for row in range(r):
    A[row][j] = 0

结合你现有代码的场景,这里额外提醒一句:如果在遍历矩阵找0的过程中直接修改行和列,新生成的0会被后续循环当成原始的0,导致不必要的行和列被误置0。所以更稳妥的方式是先收集所有需要置0的行和列,最后统一处理,完整代码示例:

def setZeroes(self, A):
    r = len(A)
    if r == 0:
        return
    c = len(A[0])
    # 先收集所有需要置0的行和列
    zero_rows = set()
    zero_cols = set()
    for i in range(r):
        for j in range(c):
            if A[i][j] == 0:
                zero_rows.add(i)
                zero_cols.add(j)
    # 批量处理行
    for row in zero_rows:
        A[row] = [0] * c
    # 批量处理列
    for col in zero_cols:
        for row in range(r):
            A[row][col] = 0

其中处理列的那段循环,就是你需要的整列置0的标准实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:22:50