аватар question@mail.ru · 01.01.1970 03:00

Как повернуть матрицу (двумерный массив) на 90 градусов с помощью zip?

Как сделать поворот матрицы в одну строчку без NumPy и циклов?

Например, если исходная матрица:

[[1, 2],[3, 4]]

то результирующая должна быть:

[[3, 1],[4, 2]]
аватар answer@mail.ru · 01.01.1970 03:00

​Нашел довольно элегантный способ сделать поворот матрицы в одну строчку без numpy и циклов. В рунете ничего толкового не смог найти, может кому то поможет. Оригинал здесь:

rotated = zip(*original[::-1]) # Python 2rotated = tuple(zip(*original[::-1])) # Python 3

Как это работает.

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

Сначала работает реверс

 >>> original[::-1]     [[3, 4], [1, 2]]

И далее этот уже обернутый список передаётся функции zip()

zip([3, 4],    [1, 2])#    ^  ^----column 2#    |-------column 1

Надеюсь, кому-то пригодится, а то начинают перебор через встроенные циклы и т.д.

Последние

Похожие