鱼C论坛

 找回密码
 立即注册
查看: 2790|回复: 5

[已解决]用python

[复制链接]
发表于 2021-11-11 06:33:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 欺Ran 于 2021-11-12 02:30 编辑

给定一个高程地图<m>的2D表示, 将地图向左旋转90度。
请用for loop 不要修改原始地图。
最佳答案
2021-11-11 19:25:31
  1. def rotate(matrix) -> None:
  2.     """
  3.     Do not return anything, modify matrix in-place instead.
  4.     """
  5.     N = len(matrix)

  6.     # 水平翻转
  7.     for i in range(N>>1):
  8.         for j in range(N):
  9.             temp = matrix[i][j]
  10.             matrix[i][j] = matrix[N-i-1][j]
  11.             matrix[N-i-1][j] = temp
  12.    
  13.     # 主对角线翻转
  14.     for i in range(N):
  15.         for j in range(N):
  16.             if i == j:
  17.                 break
  18.             else:
  19.                 temp = matrix[i][j]
  20.                 matrix[i][j] = matrix[j][i]
  21.                 matrix[j][i] = temp
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-11-11 09:03:34 | 显示全部楼层
.T
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-11 09:32:53 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-11 10:47:11 | 显示全部楼层
本帖最后由 jackz007 于 2021-11-11 13:27 编辑
  1. def lrotate(d):
  2.     e = [[]for _ in d]
  3.     for i in range(len(d)):
  4.         for j in range(len(d)):
  5.             e[len(d) - 1 - j] . append(d[i][j])
  6.     return e

  7. def rrotate(d):
  8.     e = [[]for _ in d]
  9.     for i in range(len(d)):
  10.         for j in range(len(d)):
  11.             e[j] . insert(0 , d[i][j])
  12.     return e      

  13. d = [[1 , 2 , 3] , [4 , 5 , 6] , [7 , 8 , 9]]
  14. print(lrotate(d))
  15. print(rrotate(d))
复制代码

        运行实况:
  1. D:\00.Excise\Python>python x.py
  2. [[3, 6, 9], [2, 5, 8], [1, 4, 7]]
  3. [[7, 4, 1], [8, 5, 2], [9, 6, 3]]

  4. D:\00.Excise\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-11 12:20:29 | 显示全部楼层

搞错了 .T是转置 rot90函数是旋转90°
  1. >>> import numpy as np
  2. >>> a = np.mat([[1, 2],[3, 4]])
  3. >>> a
  4. matrix([[1, 2],
  5.         [3, 4]])
  6. >>> a.T
  7. matrix([[1, 3],
  8.         [2, 4]])
  9. >>> np.rot90(a, 1)
  10. matrix([[2, 4],
  11.         [1, 3]])
  12. >>> np.rot90(a, -1)
  13. matrix([[3, 1],
  14.         [4, 2]])
  15. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-11 19:25:31 | 显示全部楼层    本楼为最佳答案   
  1. def rotate(matrix) -> None:
  2.     """
  3.     Do not return anything, modify matrix in-place instead.
  4.     """
  5.     N = len(matrix)

  6.     # 水平翻转
  7.     for i in range(N>>1):
  8.         for j in range(N):
  9.             temp = matrix[i][j]
  10.             matrix[i][j] = matrix[N-i-1][j]
  11.             matrix[N-i-1][j] = temp
  12.    
  13.     # 主对角线翻转
  14.     for i in range(N):
  15.         for j in range(N):
  16.             if i == j:
  17.                 break
  18.             else:
  19.                 temp = matrix[i][j]
  20.                 matrix[i][j] = matrix[j][i]
  21.                 matrix[j][i] = temp
复制代码
题解.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 23:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表