**
# 主要實現兩種方式
# [# [1,2,3], (0,0),(0,1),(0,2),(0,3),(0,4),(0,5) length=6 max_xy=5
# [4,5,6], (1,0),(1,1),(1,2),(1,3),(1,4),(1,5)
# [7,8,9] (2,0),(2,1),(2,2),(2,3),(2,4),(2,5)
# ] (3,0),(3,1),(3,2),(3,3),(3,4),(3,5)
# (4,0),(4,1),(4,2),(4,3),(4,4),(4,5),
# (5,0),(5,1),(5,2),(5,3),(5,4),(5,5),
# 生成矩陣
defger_matrix
(dim: int):
start = 1
while start <= dim * dim:
row =
while len(row) < dim:
start += 1
yield row
##### 1 ####
defger_colmun
(nn: int, dst: list) -> list:
l = len(dst) - 1
while l >= 0:
yield dst[l][nn]
l -= 1
# 順時針旋轉90度後,行列進行對應互換,第一行變成最後一列。。。最後一行變成第一列
defrotate_list
(tar: list) -> list:
if len(tar) == 0:
return
array_1 = len(tar[0])
for ai in range(array_1):
yield list(ger_colmun(ai, tar))
#############
##### 2 #####
# 不建立任何新的container,採用旋轉交換法
defpos_exchange
(dst: list, val: int, max_xy: int, x_last=0, y_last=0, x_origin=0, y_origin=0)-> bool:
start_pos_x, start_pos_y = y_last, abs(x_last - max_xy) # 計算移位到的座標
old, dst[start_pos_x][start_pos_y] = dst[start_pos_x][start_pos_y], val
if start_pos_x == x_origin and start_pos_y == y_origin:
if y_origin + 1 > max_xy - 1 - x_origin: # 本圈結束
return
true
y_origin += 1
start_pos_x, start_pos_y, old = x_origin, y_origin, dst[x_origin][y_origin]
pos_exchange(dst, old, max_xy, x_last=start_pos_x, y_last=start_pos_y, x_origin=x_origin, y_origin=y_origin)
defrotate
(tar: list):
circle = len(tar) // 2
# 計算旋轉圈數
max_xy = len(tar) - 1
# 計算最大x, y 座標
for c in range(circle): # 遍歷交換每一圈
pos_exchange(tar, tar[c][c], max_xy, x_last=c, y_last=c, x_origin=c, y_origin=c)
defpretty_print
(tar: list):
for t in tar:
print(t)
if __name__ == "__main__":
dlist = list(ger_matrix(10))
pretty_print(dlist)
rotate(dlist)
print("##########")
pretty_print(dlist)
# pretty_print(list(rotate_list(dlist)))
實現旋轉90度,稍加改動,可以變換任一 x 90度 的旋轉* python旋轉 Python實現旋轉矩陣
要求 給乙個n n的陣列,旋轉90度。手動畫個醜圖 image.png 簡單思路 順時針 如圖四個紅框為乙個layer,每次旋轉乙個layer,layer的範圍是 0,len nums 2 在第乙個layer迴圈中,要將四角的元素按一下順序旋轉 0,0 轉到 0,3 轉到 3,3 轉到 3,0 轉到...
矩陣運算 矩陣旋轉
以下不加證明地給出在世界座標系中,以座標點 0,0,0 為原點的旋轉矩陣 包含平移的線性變換稱作仿射變換,3d中的仿射變換不能用 3 x 3 矩陣表達,必須使用4 x 4矩陣 1.繞x座標軸旋轉 1 0 0 0 0 cos a sin a 0 0 sin a cos a 0 0 0 0 1 2.繞y...
旋轉列印矩陣 旋轉儲存矩陣 之字形列印矩陣
題目 輸入乙個矩陣,按照從外向裡以順時針順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 有三問 1 如何實現轉圈列印矩陣?2 如何實現順時針旋轉矩陣?3 如何實現 之 字形列印矩陣?題外話 由於要列印輸出矩陣,從題目可以...