Python如何修改现有代码使矩阵除以标量后返回嵌套列表结构
问题原因
你当前的代码仅初始化了一个最外层的空列表mat2,所有运算后的元素都直接追加到这个全局列表中,完全丢失了原矩阵的嵌套层级结构,所以最终得到的是一维列表。
修改方案
方案1:保留原循环逻辑调整结构
处理每一行子列表前先单独创建临时空列表存储当前行的运算结果,当前行所有元素处理完成后,再把临时子列表追加到最外层结果列表中:
def div_mat_by_scalar(mat, alpha): mat2 = [] for i in range(len(mat)): # 每行单独创建子列表 row = [] for j in range(len(mat[i])): a = mat[i][j] // alpha row.append(a) # 处理完一整行后把行添加到外层列表 mat2.append(row) return mat2 mat1 = [[2, 4], [6, 8]] print(div_mat_by_scalar(mat1,2))
运行输出即可得到你期望的[[1, 2], [3, 4]]。
方案2:用列表推导式简化写法
逻辑和上述方案完全一致,代码更简洁易读:
def div_mat_by_scalar(mat, alpha): return [[num//alpha for num in row] for row in mat] mat1 = [[2, 4], [6, 8]] print(div_mat_by_scalar(mat1,2))
内容的提问来源于stack exchange,提问作者sds
相关产品推荐
相关产品推荐

