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
원리를 이해하는 것도 좋지만, 간단하게 외워서 사용하는 것을 추천한다.(물론 원리를 이해하는 것도 좋은 공부일 것이다.)
ps. rotated가 list[tuple]형태로 나오게 되는데, 이를 list[list](원래 2중 리스트의 형태)로 바꾸려면,
rotated = list(map(list, rotated))
를 추가해주면 된다.
'파이썬 > 파이썬 문법(심화)' 카테고리의 다른 글
[WIP]대한민국에서 가장 자세한 f-string 가이드 (0) | 2023.05.26 |
---|---|
[잡지식] 문자열 연결에 "+"를 사용하지 마세요! (0) | 2023.02.19 |
(Python) 약수 구하기.(시간 복잡도:$O(\sqrt{n})$) (0) | 2022.12.26 |
2진수로 표현한 숫자의 1의 개수 세기. (0) | 2022.10.27 |
0으로 초기화된 2-차원 리스트 생성하기. (0) | 2022.06.28 |