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