Python列表推导式解析及矩阵对角线求和代码运行过程答疑
解析Python代码的执行流程与原理
一、嵌套列表推导式生成二维列表t
原代码中生成t的语句是:
t = [[3-i for i in range(3)]for j in range(3)]
这是嵌套列表推导式,拆成两步理解更清晰:
- 内层列表推导式
[3-i for i in range(3)]:range(3)会生成0、1、2三个值,依次代入i计算3-i:- i=0 → 3-0=3
- i=1 → 3-1=2
- i=2 → 3-2=1
- 所以内层每次生成的列表都是
[3, 2, 1]
- 外层循环
for j in range(3):- 这个循环仅控制生成内层列表的数量(循环3次,对应生成3个内层列表),
j的值不会影响内层列表的内容 - 最终
t的结构是:[[3, 2, 1], [3, 2, 1], [3, 2, 1]]
- 这个循环仅控制生成内层列表的数量(循环3次,对应生成3个内层列表),
你之前的理解存在偏差:内层的i和外层的j是完全独立的变量,二者没有同步关联,不是成对循环的。
二、求和步骤的执行过程
接下来的代码用于计算二维列表对角线元素的和:
s = 0 for i in range(3): s += t[i][i] print(s)
执行流程如下:
- 初始化
s = 0,用于累计求和结果 - 循环变量
i依次取0、1、2:- i=0时,取
t[0][0](第一个子列表的第一个元素,值为3),s = 0 + 3 = 3 - i=1时,取
t[1][1](第二个子列表的第二个元素,值为2),s = 3 + 2 = 5 - i=2时,取
t[2][2](第三个子列表的第三个元素,值为1),s = 5 + 1 = 6
- i=0时,取
- 最后
print(s)输出结果6
内容的提问来源于stack exchange,提问作者Marko Kostic
相关产品推荐
相关产品推荐

