【问题标题】:Problem with rotating a two-dimensional array in python [duplicate]在python中旋转二维数组的问题[重复]
【发布时间】:2021-12-18 21:33:03
【问题描述】:

如何在不使用 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]]

【问题讨论】:

  • 不要创建一个空的list,而是用零或其他值初始化list,这样你就不会出现超出范围的错误
  • 如果您正在查看数学方法而不使用其他库,您可以阅读此内容。 integratedmlai.com/matrixinverse

标签: python


【解决方案1】:

您可以在反转数组上使用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]]

【讨论】:

  • 可以用append完成吗?
  • 为什么?这是作业吗?
  • 类似的东西
  • 我认为这是肯定的......是的,它可以做到,但你应该从一开始就明确表示这是一项任务(参见 SO 指南),你的问题不会是关闭
【解决方案2】:

这样做:

list(zip(*multiarray[::-1]))

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多