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

Python新手求助:查找矩阵中同位置有非零公共元素的行

Python矩阵行公共非零元素查找方案

首先修正你的矩阵格式,Python列表里元素需要用逗号分隔,否则会报错:

A = [
    [1, 1, 0, 0, 0, 0],
    [1, 0, 0, 0, 0, 0],
    [0, 0, 1, 0, 0, 0],
    [0, 0, 0, 1, 1, 1],
    [0, 0, 0, 1, 1, 1]
]

实现思路

遍历所有不重复的行对(避免重复检查比如(0,1)和(1,0)),对每一行对逐元素对比:只要存在至少一个位置,两行在该位置的元素都非零且相等,就记录这对行的索引。

代码实现

# 存储符合条件的行对
matching_pairs = []
rows = len(A)

# 遍历所有i<j的行对
for i in range(rows):
    for j in range(i + 1, rows):
        # 检查当前行对是否存在相同位置的非零公共元素
        has_common_nonzero = False
        for elem_i, elem_j in zip(A[i], A[j]):
            if elem_i != 0 and elem_i == elem_j:
                has_common_nonzero = True
                break  # 找到一个就不用继续检查了
        if has_common_nonzero:
            matching_pairs.append((i, j))

# 输出结果
print("存在相同位置非零公共元素的行对:")
for pair in matching_pairs:
    print(f"行{pair[0]} 和 行{pair[1]}")

运行结果

存在相同位置非零公共元素的行对:
行0 和 行1
行3 和 行4

补充说明

  • 代码里用zip(A[i], A[j])同时遍历两行的元素,简洁高效;
  • 一旦找到符合条件的元素就break,减少不必要的计算;
  • 如果你需要区分“完全相等的行”和“部分相同非零元素的行”,可以在判断里加额外条件:
exact_matches = []
partial_matches = []

for i in range(rows):
    for j in range(i + 1, rows):
        if A[i] == A[j]:
            exact_matches.append((i, j))
        else:
            has_common = False
            for ei, ej in zip(A[i], A[j]):
                if ei !=0 and ei == ej:
                    has_common = True
                    break
            if has_common:
                partial_matches.append((i, j))

print("完全相等的行对:", exact_matches)
print("部分相同非零元素的行对:", partial_matches)

运行后会输出:

完全相等的行对: [(3, 4)]
部分相同非零元素的行对: [(0, 1)]

内容的提问来源于stack exchange,提问作者Ludovica Spada Chiodo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:12:37