본문 바로가기
파이썬/파이썬 문법(심화)

2차원 리스트를 회전시키기

by soypablo 2022. 10. 25.

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))

를 추가해주면 된다.