如何根据输入的数值n生成元素连续递增的n阶二维数组
n×n连续递增二维矩阵实现方案
现有代码问题说明
- 第一段代码错误:预先初始化了A×A的全0二维矩阵后,循环中直接调用
append()往矩阵末尾追加元素,没有对矩阵对应位置的元素赋值,最终会得到结构混乱的列表,完全不符合二维矩阵要求。 - 第二段代码错误:内层、外层循环使用了同名变量
i,导致外层循环的i被内层覆盖,每一行的生成逻辑都只用到了内层的i,最终所有行都是相同的[1,2,3]。
正确实现方案
方案1:列表推导式实现(简洁写法)
核心逻辑:第i行(索引从0开始)的起始值为i*A,每行的第j个元素(索引从0开始)为i*A + j + 1,即可实现数值连续递增:
# A为输入的正整数 A = 3 matrix = [[i * A + j + 1 for j in range(A)] for i in range(A)] print(matrix)
运行输出:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
方案2:普通循环实现(易读写法)
对应第一段代码的修正版,直接给二维矩阵的对应位置赋值:
# A为输入的正整数 A = 3 matrix = [[0]*A for _ in range(A)] for i in range(A): for j in range(A): matrix[i][j] = i * A + j + 1 print(matrix)
两种方案对任意正整数输入A都适用,完全满足需求:
- 输入A=1,输出
[[1]] - 输入A=2,输出
[[1, 2], [3, 4]]
内容的提问来源于stack exchange,提问作者abd
相关产品推荐
相关产品推荐

