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

代码简化咨询及4阶幻方矩阵判断函数开发需求

判断4×4幻方矩阵的Python实现及代码简化思路

首先,针对你的需求,我先给出一个简洁的实现,然后再聊聊代码简化的思路。

幻方判断函数的实现

我们可以利用Python的内置sum函数和生成器表达式来高效完成判断,核心逻辑是:

  1. 计算目标和(取第一行的和作为基准)
  2. 检查所有行的和是否等于目标和
  3. 检查所有列的和是否等于目标和
  4. (可选)额外验证输入确实是4×4矩阵,避免非法输入
def is_magic_square(matrix):
    # 先验证输入是4×4矩阵
    if len(matrix) != 4 or any(len(row) != 4 for row in matrix):
        raise ValueError("输入必须是4×4的二维列表")
    
    target_sum = sum(matrix[0])
    
    # 检查所有行的和
    if any(sum(row) != target_sum for row in matrix):
        return False
    
    # 检查所有列的和:通过zip转置矩阵,然后求和判断
    if any(sum(col) != target_sum for col in zip(*matrix)):
        return False
    
    return True

测试示例幻方矩阵

用你给出的4×4幻方矩阵来测试这个函数:

# 示例幻方矩阵
magic_matrix = [
    [16, 2, 3, 13],
    [5, 11, 10, 8],
    [9, 7, 6, 12],
    [4, 14, 15, 1]
]

print(is_magic_square(magic_matrix))  # 输出: True

代码简化思路

如果要进一步简化这个函数,可以从这几个角度入手:

  • 合并行和列的检查逻辑,用一个生成器表达式同时处理行和转置后的列
  • 去掉输入验证(如果能确保输入一定是4×4矩阵的话),不过不推荐,会降低代码健壮性
  • 用更紧凑的写法,但要保证可读性

简化后的版本(兼顾简洁和可读性):

def is_magic_square_simplified(matrix):
    target = sum(matrix[0])
    # 检查所有行 + 检查所有列(转置后)
    return all(sum(line) == target for line in matrix + list(zip(*matrix)))

注意:这个简化版本没有输入验证,如果输入不是4×4矩阵会出错,所以如果需要处理非法输入,还是建议保留输入验证部分。

另外,如果你有现有的代码,也可以贴出来,我可以帮你针对性地优化简化~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:13:27