Python矩阵加法代码切片语法与结果矩阵初始化逻辑疑问
疑问1:
[:A_col]的作用 这是Python的列表切片操作,作用是保证当前输入的矩阵行元素个数严格等于设定的列数。
整行代码row = list(map(int, input().split()))[:A_col]的执行流程是:
- 读取用户输入的一行内容,按空格分割成字符串列表
- 用
map(int, ...)把每个字符串转成整数,再转成列表 - 最后用
[:A_col]取列表的前A_col个元素:- 如果你输入的元素比要求的多,比如要求3列,你输了
1 2 3 4,会自动截断前3个,避免行长度超过矩阵列数 - 如果你输入的元素比要求的少,就保留所有输入的元素(这部分属于代码的小瑕疵,不影响切片逻辑的理解)
- 如果你输入的元素比要求的多,比如要求3列,你输了
疑问2:
result相关代码解释 2.1 初始化行result = [([0]*A_col) for i in range(A_row)]
这是Python的列表推导式写法,作用是快速生成一个和矩阵A行数、列数完全相同的全0矩阵,用来存储后续加法计算的结果。
拆解来看:
[0]*A_col:生成一个包含A_col个0的列表,对应矩阵的一行,比如A_col是3的话就是[0,0,0]for i in range(A_row):把上面的单行列表重复生成A_row次,比如A_row是2的话,最终得到的result就是[[0,0,0], [0,0,0]]
之所以要提前初始化全0矩阵,是因为后面需要用索引result[i][j]直接赋值,如果不提前创建好对应位置的元素,直接赋值会报索引越界错误。
2.2 后续循环与打印逻辑
- 两层嵌套循环:外层循环遍历所有行(
i是行号),内层循环遍历所有列(j是列号),把A和B矩阵对应位置的元素相加,存到result的同位置上,符合矩阵加法的规则:两个矩阵只有行列数都相等才能相加,结果矩阵每个位置的值等于两个输入矩阵同位置的值之和。 - 打印部分:先遍历result的每一行,再遍历每行里的每个元素,用
end=' '保证同一行的元素用空格分隔、不会换行,打完一整行之后再执行一次print()换行。
内容的提问来源于stack exchange,提问作者0329
相关产品推荐
相关产品推荐

