编写Python程序,通过Python控制台输入一个大于1的整数n,然后产生一个二维列表。二维列表的尺寸是nn。每一个列表元素的值从1到nn,依次排列。请使用较为复杂的算法
时间: 2024-03-14 09:46:48 浏览: 75
python实现两个一维列表合并成一个二维列表
可以使用螺旋矩阵算法来实现:
```python
n = int(input("请输入一个大于1的整数n: "))
matrix = [[0] * n for _ in range(n)]
num = 1
left, right, top, bottom = 0, n-1, 0, n-1
while num <= n*n:
for i in range(left, right+1):
matrix[top][i] = num
num += 1
for i in range(top+1, bottom+1):
matrix[i][right] = num
num += 1
for i in range(right-1, left-1, -1):
matrix[bottom][i] = num
num += 1
for i in range(bottom-1, top, -1):
matrix[i][left] = num
num += 1
left, right, top, bottom = left+1, right-1, top+1, bottom-1
```
这里使用了一个 while 循环和四个 for 循环来填充二维列表,其中 left、right、top、bottom 四个变量分别表示当前要填充的子矩阵的四个边界。首先,从左到右填充上边界,然后从上到下填充右边界,接着从右到左填充下边界,最后从下到上填充左边界。每次填充完一个子矩阵后,就缩小边界,继续填充下一个子矩阵,直到填充完所有的元素。
例如,当输入 n=3 时,输出的二维列表为:
```
[[1, 2, 3],
[8, 9, 4],
[7, 6, 5]]
```
阅读全文