转置方阵:
n = 9
lst1 = []
lst2 = list(range(1,n+1))
width = int(n**0.5)
for i in range(0,len(lst2),width):
lst1.append(lst2[i:i+width])
else:
print(lst1)
for i in range(width):
print(lst1[i])
for x in range(len(lst1)):
if x == x * (width+1):
continue
else:
for j in range(x):
lst1[x][j],lst1[j][x] = lst1[j][x],lst1[x][j]
else:
print('------------------------')
print(lst1)
for i in range(width):
print(lst1[i])
运行结果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
------------------------
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]
案例变形:
n = 9
lst1 = []
lst2 = list(range(1,n+1))
width = int(n**0.5)
for i in range(0,len(lst2),width):
lst1.append(lst2[i:i+width])
else:
print(lst1)
for i in range(width):
print(lst1[i])
for x,row1 in enumerate(lst1):
for y,row2 in enumerate(row1):
if x < y:
lst1[x][y],lst1[y][x] = lst1[y][x],lst1[x][y]
else:
print('----------------------------------')
print(lst1)
for i in range(width):
print(lst1[i])
运行结果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
------------------------
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]