如何将MxN矩阵的所有行替换为1到N的数值序列?
解决MxN矩阵行替换为1到N序列的问题
核心思路
不管原矩阵的行内容是什么,只需生成一个长度为N的序列[1,2,...,N],让矩阵的每一行都等于这个序列即可。
Python 实现方法
方法1:直接生成新矩阵(最简洁)
无需修改原矩阵,直接构造目标矩阵:
# 原矩阵 matrix = [[4,6,8,9,3],[5,1,2,5,6],[1,9,4,5,7],[3,8,8,2,5],[1,4,2,2,7]] # 获取每行的长度N n = len(matrix[0]) # 生成目标矩阵:M行,每行都是1到N的序列 new_matrix = [[num for num in range(1, n+1)] for _ in matrix] print(new_matrix)
输出结果:
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
方法2:遍历修改原矩阵
如果需要直接修改原矩阵,注意避免所有行引用同一个列表对象:
matrix = [[4,6,8,9,3],[5,1,2,5,6],[1,9,4,5,7],[3,8,8,2,5],[1,4,2,2,7]] n = len(matrix[0]) # 先生成目标行 target_row = list(range(1, n+1)) # 遍历每一行替换 for i in range(len(matrix)): # 使用copy()避免所有行指向同一个列表 matrix[i] = target_row.copy() print(matrix)
关键注意点
- 确保矩阵非空且所有行长度一致(符合MxN矩阵定义),否则需先做合法性检查。
- 若直接赋值
matrix[i] = target_row,所有行将共享同一个列表引用,后续修改其中一行会影响所有行,因此必须使用copy()或重新生成序列。
内容的提问来源于stack exchange,提问作者NoahRyu
相关产品推荐
相关产品推荐

