我正在尝试创建一个方阵,给定一个整数输入。
例如:
# for n=3
m = [[1, 2, 3], [4, 5, 6],[7, 8, 9]]
我的尝试:
m = list(list(range(1*i,(n+1)*i,i)) for i in range(1,n+1))
print(m)
打印这个结果:
[[1, 2, 3], [2, 4, 6], [3, 6, 9]]
数组必须是正方形的并且由连续的整数组成。
最佳答案
这是一种方法:
n = 3
m = [list(range(1+n*i, 1+n*(i+1))) for i in range(n)]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
主要的误解似乎在于发现模式。例如,每列中的第一个值可以通过 1 + 3 * i
计算,其中 i
遍历 0, 1, 2
。对于range
的end
参数,只需要在公式中加上n,我们就可以使用恒等式:
n*i + n = n*(i+1)
顺便说一句,如果您乐于使用第 3 方库,这对于 NumPy 来说是微不足道的:
import numpy as np
n = 3
A = np.arange(1, n**2 + 1).reshape((n, n))
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
关于python - 如何在 python 中创建整数方形列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52741555/