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

Python中range与len在for循环中的用法及代码逻辑解析咨询

这段Python代码的运行逻辑及range()/len()用法解析

先补全可运行的完整代码(原代码缺少函数定义部分):

def sum_above_diagonal(m):
    sum = 0 # 初始化总和为0
    for i in range(len(m)): 
        for j in range(len(m[i])):
            if i <= j:
                sum = sum + m[i][j]
    return sum

print(sum_above_diagonal([[6, 2, 0, 6, 1], [6, 8, 2, 5, 8], [0, 6, 3, 2, 3]]))

一、整体功能

这段代码定义了一个函数,接收二维列表(矩阵)作为输入,计算并返回主对角线(行索引等于列索引的位置)及对角线以上区域的所有元素之和。

二、逐行拆解运行逻辑

  1. 初始化累加变量
    sum = 0:先把用来存结果的sum设为0,避免后续累加出错。

  2. 外层循环:遍历每一行
    for i in range(len(m)):

  • len(m):计算输入矩阵的行数,示例里的矩阵有3行,所以返回3。
  • range(3):生成0、1、2这三个整数(Python索引从0开始),对应矩阵的行索引。外层循环会依次让i取这三个值,逐个处理每一行。
  1. 内层循环:遍历当前行的每一列
    for j in range(len(m[i])):
  • m[i]是当前遍历到的行(比如i=0时,就是第一行[6,2,0,6,1]),len(m[i])算出该行的列数,示例里每行有5列,返回5。
  • range(5)生成0、1、2、3、4这几个列索引,内层循环让j依次取这些值,遍历当前行的每个元素。
  1. 筛选目标区域元素
    if i <= j:主对角线的位置是i == j,i < j是对角线以上的区域(比如第0行所有列都符合,第1行从第2列开始符合),只有满足这个条件的元素才会被累加。

  2. 累加元素
    sum = sum + m[i][j]:把符合条件的元素值加到sum里,逐步累积总和。

  3. 返回结果
    return sum:所有循环结束后,返回最终的累加结果,最后print函数把结果输出。

三、range()和len()在for循环中的配合用法

遍历列表(尤其是二维列表)时,这两个函数常搭配使用:

  • len()用来获取列表的长度(元素个数),比如一维列表lst的长度是len(lst),二维列表m的行数是len(m),某一行的列数是len(m[i])。
  • range()根据长度生成对应的索引序列,比如range(n)会生成从0到n-1的整数,刚好对应列表的所有索引。
  • 这样就能通过索引i、j精准访问列表中的每个元素,实现对整个列表的遍历。

四、示例输入的计算结果

示例输入的矩阵:

行0:6 2 0 6 1
行1:6 8 2 5 8
行2:0 6 3 2 3

需要累加的元素:

  • 行0:全部元素 → 6+2+0+6+1=15
  • 行1:第2到第5列元素 →8+2+5+8=23
  • 行2:第3到第5列元素 →3+2+3=8
    总和:15+23+8=46,所以最终print输出46。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:35:50