파이썬/파이썬 문법(심화)
2차원 리스트를 회전시키기
soypablo
2022. 10. 25. 18:24
2차원 리스트를 회전시켜야 할 때가 종종 있다.(특히 PS나, 코딩테스트에서 자주 등장한다.)
매우 난해한 문법이지만, 파이썬에서는 2차원 리스트를 단 한줄로 회전 시킬 수 있다.
original = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
# 시계방향 회전.
rotated = list(zip(*original[::-1]))
rotated2 = list(zip(*original))[::-1]
print("시계방향 회전")
print(*rotated, sep="\n")
print("반시계방향 회전")
print(*rotated2, sep="\n")
>>>
시계방향 회전
(7, 4, 1)
(8, 5, 2)
(9, 6, 3)
반시계방향 회전
(3, 6, 9)
(2, 5, 8)
(1, 4, 7)
출처:https://stackoverflow.com/questions/8421337/rotating-a-two-dimensional-array-in-python
Rotating a two-dimensional array in Python
In a program I'm writing the need to rotate a two-dimensional array came up. Searching for the optimal solution I found this impressive one-liner that does the job: rotated = zip(*original[::-1]) ...
stackoverflow.com
원리를 이해하는 것도 좋지만, 간단하게 외워서 사용하는 것을 추천한다.(물론 원리를 이해하는 것도 좋은 공부일 것이다.)
ps. rotated가 list[tuple]형태로 나오게 되는데, 이를 list[list](원래 2중 리스트의 형태)로 바꾸려면,
rotated = list(map(list, rotated))
를 추가해주면 된다.