在我编写的程序中,出现了旋转二维数组的需要。在寻找最佳解决方案的过程中,我发现了这款令人印象深刻的单线产品:

rotated = zip(*original[::-1])

我现在在我的程序中使用它,它按预期工作。我的问题是,我不明白它是如何工作的。

如果有人能解释所涉及的不同功能如何达到预期的结果,我将不胜感激。

最佳答案

考虑以下二维列表:

original = [[1, 2],
            [3, 4]]

让我们一步一步分解它:
>>> original[::-1]   # elements of original are reversed
[[3, 4], [1, 2]]

这个列表被传递到 zip() 使用 argument unpacking ,所以 zip 调用最终相当于这个:
zip([3, 4],
    [1, 2])
#    ^  ^----column 2
#    |-------column 1
# returns [(3, 1), (4, 2)], which is a original rotated clockwise

希望评论能说明 zip 的作用,它将根据索引对每个输入迭代中的元素进行分组,或者换句话说,它将列分组。

关于python - 在 Python 中旋转二维数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8421337/

10-12 18:14