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

如何简化提取二维网格右下对角线字符串的Python代码且保持输出不变

右下方向对角线上的元素满足行索引+列索引的和相等,比如(0,1)和(1,0)的行+列都是1,属于同一条对角线,我们可以基于这个规律用基础语法实现,全程只用到循环、列表、字典这些入门知识点:

def diagsDownRight(M):
    row_count = len(M)
    col_count = len(M[0])
    # 字典存储所有对角线:key为行索引+列索引的和,value为对应对角线的字符列表
    diag_map = {}
    # 遍历网格中所有元素
    for row_idx in range(row_count):
        for col_idx in range(col_count):
            key = row_idx + col_idx
            # 首次遇到该key时初始化空列表
            if key not in diag_map:
                diag_map[key] = []
            # 把当前字符加入对应对角线的列表
            diag_map[key].append(M[row_idx][col_idx])
    # 按key从小到大排序,拼接为字符串后返回
    result = []
    for key in sorted(diag_map.keys()):
        result.append(''.join(diag_map[key]))
    return result

测试验证

用你提供的mystery网格测试:

mystery = [["r","a","w","b","i","t"],
           ["x","a","y","z","c","h"],
           ["p","q","b","e","i","e"],
           ["t","r","s","b","o","g"],
           ["u","w","x","v","i","t"],
           ["n","m","r","w","o","t"]]
print(diagsDownRight(mystery))

输出结果与原代码完全一致,功能完全相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:27:03