尝试将矩阵旋转90度,但无法正常工作。

3
def rotate_ninety(matrix):
    putin = []
    temporary = []
    row_size = len(matrix)
    col_size = len(matrix[0])
    ccount = col_size-1
    putin_idx = 0
    while ccount > -1:
        for i in range(row_size):
            temporary.insert(i, matrix[i][ccount])

        putin.insert(putin_idx, temporary)
        ccount = ccount -1
        temporary.clear()
        putin_idx += 1

    print(putin)
    return 0

因此,如果有以下输入

[1,2,3]
[4,5,6]
[7,8,9]

结果应该是:
[3,6,9]
[2,5,8]
[1,4,7]

然而,当我打印出putin时,我得到的是[[] [] []],一个全为空的数组,我不明白我的逻辑错在哪里。我知道还有其他更有效的方法来做这件事,但我不明白我的代码哪里有问题。

亲爱的问卷调查者,请也检查一下我的答案。 - Behdad Abdollahi Moghadam
嗨Behdad,谢谢你的回答:)。像这样的东西正是我在寻找的,感谢你的帮助。 - questionaire
非常感谢您的提问,如果这是您正在寻找的答案,我会非常高兴如果您将其选择为正确答案✅。祝好! - Behdad Abdollahi Moghadam
2个回答

2
当你将一个列表(list)分配给另一个变量(也是列表),该list object将被分配或追加。由于在将temporary列表添加到putin列表后,清除了temporary,所以刚刚添加的对象也被删除了。你需要将temporary列表的一个copy添加到putin中,如下所示:
import copy

def rotate_ninety(matrix):
    putin = []
    temporary = []
    row_size = len(matrix)
    col_size = len(matrix[0])
    ccount = col_size-1
    putin_idx = 0
    while ccount > -1:
        for i in range(row_size):
            temporary.append(matrix[i][ccount])
        putin.append(copy.copy(temporary))
        ccount = ccount -1
        temporary.clear()
        putin_idx += 1

    print(putin)
    return 0

matrix = [[1,2,3],[4,5,6],[7,8,9]]
rotate_ninety(matrix)

结果将会是:
[[3, 6, 9], [2, 5, 8], [1, 4, 7]]


0

这是使用numpy的简单方法:

matrix = np.arange(1,10).reshape((3,3))

rotated_90 = matrix.T[::-1]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接