python - 在python中旋转二维数组的问题
问题描述
如何在不使用 numpy 的情况下使该数组向右旋转 90 度。
multiarray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
auxiliaryArray = []
colLength = len(multiarray[0])
rowLength = len(multiarray)
for indexRow in range(len(multiarray)):
for indexCol in range(len(multiarray[0])):
auxiliaryArray[indexCol][rowLength - 1 - indexRow] = multiarray[indexRow][indexCol]
print(auxiliaryArray)
错误:
IndexError: list index out of range
期望的输出:[[7, 4, 1], [8, 5, 2], [9, 6, 3]]
解决方案
您可以zip
在反转数组上使用:
auxiliaryArray = list(zip(*multiarray[::-1]))
或者
auxiliaryArray = list(zip(*reversed(multiarray)))
输出:[(7, 4, 1), (8, 5, 2), (9, 6, 3)]
如果您需要列表而不是元组:
auxiliaryArray = list(map(list, zip(*reversed(multiarray))))
输出:[[7, 4, 1], [8, 5, 2], [9, 6, 3]]
推荐阅读
- javascript - 单击时切换选项颜色(下拉菜单是否可见)
- ruby-on-rails - 在 Ruby on Rails 上客户端取消对后端的请求后会发生什么?
- r - 在 R 中启用急切执行时,不支持关于 tf.gradients
- python - 从 Azure Databricks 中的日期列表输出创建 CSV
- spring - 周一每两周安排一次任务
- python-3.x - Python:模块未找到错误
- couchdb - 大查询/更新超时崩溃后,Fabric 无法恢复对等点
- python - 遍历 numpy 数组仅返回最后一项
- android-studio - 为什么我的模拟器显示在 android studio 空白处而不是应用程序和键盘中?
- gpgpu - 如何将动态大小的超大数组传递给 Metal Argument 缓冲区?