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

修正Python矩阵主副对角线重复元素判断代码的逻辑问题

问题修正:判断矩阵主对角线与反对角线是否存在重复元素

原代码无法正确输出结果的核心问题在于函数缩进错误,同时可以优化逻辑让代码更简洁可靠。以下是问题分析和修正方案:

原代码问题分析

  1. 缩进语法错误:common_data函数内的for x in list1语句缩进不正确,直接导致代码无法正常运行。
  2. 逻辑冗余且不规范:嵌套循环判断重复元素的方式效率低,且函数未明确处理“无重复元素”的返回情况(虽实际运行会默认返回None,但不符合代码规范)。

修正后的代码

import numpy as np

m1 = np.arange(1, 10).reshape(3, 3)

# 提取主对角线
diagonal = np.diag(m1)
# 用numpy更简洁的方式提取反对角线
antdiagonal = np.diag(np.fliplr(m1))

# 高效判断是否存在共同元素
def common_data(list1, list2):
    # 集合交集不为空则说明有重复元素
    return len(set(list1) & set(list2)) > 0

if common_data(diagonal, antdiagonal):
    print("hitter")
else:
    print("Non-hitter")

代码说明

  1. 反对角线提取优化:通过np.fliplr(m1)将矩阵左右翻转后提取对角线,替代手动循环,代码更简洁高效。
  2. 重复判断优化:利用集合交集特性判断重复,时间复杂度从原代码的O(n²)降至O(n),逻辑清晰且性能更好。
  3. 修复语法问题:彻底修正原函数的缩进错误,确保代码正常执行。

运行修正后的代码,针对主对角线[1,5,9]和反对角线[3,5,7]的场景,会正确输出hitter。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:15:40