def helix_matrix(k):
"""
螺旋方阵列表函数
:param k: 代表k阶矩阵
:return: 返回螺旋方阵列表
"""
list1 = [[0] * k for _ in range(k)]
x = 0
y = 0
num = 1
n = 0
list2 = list(range(1, k + 1)) + list(range(1, k + 1))
list2.sort(reverse=True)
list2.remove(k)
while 1:
for _ in range(list2[n]):
list1[x][y] = num
num += 1
y += 1
y -= 1
n += 1
x += 1
if n == len(list2):
return list1
for _ in range(list2[n]):
list1[x][y] = num
num += 1
x += 1
x -= 1
n += 1
y -= 1
if n == len(list2):
return list1
for _ in range(list2[n]):
list1[x][y] = num
num += 1
y -= 1
y += 1
n += 1
x -= 1
if n == len(list2):
return list1
for _ in range(list2[n]):
list1[x][y] = num
num += 1
x -= 1
x += 1
n += 1
y += 1
if n == len(list2):
return list1
def main():
print(helix_matrix(10))
if __name__ == '__main__':
main()
输出如下:
[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[36, 37, 38, 39, 40, 41, 42, 43, 44, 11],
[35, 64, 65, 66, 67, 68, 69, 70, 45, 12],
[34, 63, 84, 85, 86, 87, 88, 71, 46, 13],
[33, 62, 83, 96, 97, 98, 89, 72, 47, 14],
[32, 61, 82, 95, 100, 99, 90, 73, 48, 15],
[31, 60, 81, 94, 93, 92, 91, 74, 49, 16],
[30, 59, 80, 79, 78, 77, 76, 75, 50, 17],
[29, 58, 57, 56, 55, 54, 53, 52, 51, 18],
[28, 27, 26, 25, 24, 23, 22, 21, 20, 19]]