转置方阵:
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]