| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 오피스
- python
- 윈도우10
- pythongui
- VBA
- Excel
- 파워포인트
- 문자열
- 파이썬GUI
- 파이썬3
- Windows11
- 깃
- 안드로이드
- 파이썬
- windows
- 윈도우11
- Outlook
- 아웃룩
- html
- python3
- win32com
- Windows10
- Android
- matlab
- pandas
- git
- 엑셀
- office
- 비주얼베이직
- pyqt5
Appia의 IT세상
파이썬[Python] 리스트(List) 역순으로 만들기, 뒤집기 (reversed / reverse / 슬라이싱 비교) 본문
파이썬[Python] 리스트(List) 역순으로 만들기, 뒤집기 (reversed / reverse / 슬라이싱 비교)
Appia 2020. 3. 9. 07:18파이썬[Python] 리스트(List) 역순으로 만들기,뒤집기(reversed / reverse / 슬라이싱 비교)

파이썬에서 list를 역순으로 다루는 방법은 생각보다 다양합니다. 경우에 따라서는 단순히 뒤에서부터 값을 읽어가며 순회하면 충분할 때도 있고, 반대로 리스트 자체를 거꾸로 뒤집어야 할 때도 있습니다.
이번 포스팅에서는 list를 역순으로 처리할 때 자주 쓰는 세 가지 방법인 슬라이싱([::-1]), reverse(), reversed()를 비교해보겠습니다. 각 방식이 원본 리스트를 변경하는지, 어떤 값을 반환하는지, 그리고 어떤 상황에서 선택하는 게 좋은지를 실제 예제와 함께 정리해보겠습니다.
※ 이 글은 2026년 1월 기준으로 내용이 보완 및 업데이트되었습니다.
슬라이싱([::-1])
슬라이싱[::-1]는 원본 리스트를 유지하면서 역순 리스트(복사본) 를 새로 만들 때 사용합니다. 예를 들어 원본 A는 그대로 두고, 역순으로 뒤집힌 B 리스트가 필요하다면 슬라이싱이 가장 간단합니다. 그러면 간단한 예시를 살펴보겠습니다.
my_list = [1,2,3,4,5]
reversed_list = my_list[::-1]
print(my_list)
print(reversed_list)
위에서 my_list에 선언된 list를 슬라이싱 방식을 통해서 역으로 리스트를 하나 더 만든 것입니다. 즉, 기존 list는 그대로 두고, 역순 복사본을 생성하는 형태입니다. 위의 실행결과는 다음과 같이 나타납니다.

reverse()
앞서서 슬라이싱 방식은 별도의 리스트를 한개 생성하였다면, 리스트 자체를 역으로 변경하기 위한 방식으로 reverse()함수를 사용할 수 있습니다. 기존 선언되어 있는 리스트의 reverse()함수를 바로 실행하면 됩니다. 아래 예제를 통해 같이 살펴보겠습니다.
my_list = [1,2,3,4,5]
my_list.reverse()
print(my_list)
기존 선언되어 있는 my_list라는 list에서 ".reverse()"를 붙여서 실행합니다. 그리고 해당 리스트를 출력하면 기존에 입력된 값이 반대로 되어 있는 것을 확인할 수 있습니다.

그러면 다음과 같은 예시는 사용이 동작할까요?
my_list = [1,2,3,4,5]
for i in my_list.reverse():
print(i)
위의 예시를 실행하면 문제가 발생합니다. reverse()는 반환값이 없지만(None), 리스트 자체를 제자리에서 변경합니다 . 따라서 실행하면 다음과 같은 문제가 발생합니다.

이 부분에 대해서 쉽게 생각하시기 위해선 다음 예제 코드를 살펴보겠습니다.
my_list = [1,2,3,4,5]
print(my_list.reverse())
print(my_list)
위의 예제 코드를 실행하면 다음과 같은 결과가 나타납니다.

그러면 위에서 문제나는 부분을 정상적으로 실행하기 위해서는 어떻게 해야할까요? 다음과 같이 코드를 구성해야 합니다.
my_list = [1,2,3,4,5]
my_list.reverse()
for i in my_list:
print(i)
위에서, 언급한 바와 같이 reverse() 반환형은 없지만, 해당 list 자체를 변경합니다.
reversed()
reversed()는 원본 list는 그대로 유지하면서 역순으로 순회할 때 가장 편한 방법입니다. 슬라이싱처럼 새 리스트를 바로 만들지 않고, 역순으로 읽어줄 수 있는 이터레이터를 반환합니다.
my_list = [1, 2, 3, 4, 5]
for i in reversed(my_list):
print(i)
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.

이 과정에서 my_list 원본은 변경되지 않습니다.
즉, 역순으로 루프만 돌리고, 별도의 역순 리스트가 필요하지 않다면 reversed()가 가장 편리합니다. 그러면 reversed()의 경우 슬라이싱처럼 역순 리스트를 만들 수는 없을까요? 필요하다면 list()로 감싸서 새 리스트로 변환할 수 있습니다.
my_list = [1, 2, 3, 4, 5]
reversed_list = list(reversed(my_list))
print(my_list)
print(reversed_list)
위의 코드를 실행하면 다음과 같이 나타나는 것을 알 수 있습니다.

참고로, reversed() 반환값은 list가 아니라 이터레이터이기 때문에 다음 코드를 실행해보면 리스트가 생성되지 않음을 알 수 있습니다.
my_list = [1, 2, 3, 4, 5]
print(reversed(my_list))

슬라이싱 [::-1] /reverse()/reversed() 비교
마지막으로 슬라이싱[::-1], reverse(), reversed()를 원본 변경 여부/반환 타입/메모리 관점에서 간단히 비교해보겠습니다.
| 방법 | 원본 변경 | 반환 타입 | 메모리 | 추천 상황 |
| lst[::-1] | 변경 안 함 | list (새 리스트) | 추가 메모리 사용(복사본 생성) | 역순 리스트가 필요하고 원본은 유지해야 할 때. 한 줄로 간단히 만들고 싶을 때 |
| lst.reverse() | 변경함 | None | 추가 메모리 거의 없음 | 원본 리스트 자체를 뒤집어도 될 때(제자리 변경). 메모리 절약이 필요할 때 |
| reversed(lst) | 변경 안 함 | list_reverseiterator (이터레이터) | 매우 적음(지연 평가) | 역순으로 순회만 하면 될 때(for 루프). 필요 시 list(reversed(lst))로 리스트 변환 |
- 원본을 유지한 채 역순 순회는 reversed(), 역순 리스트 생성은 [::-1], 원본 자체 뒤집기는 reverse()가 가장 직관적입니다.
이번 포스팅에서는 슬라이싱[::-1], reverse(), reversed()을 이용하여 list 역순으로 변환하는 방법에 대해서 살펴봤습니다. 정리하면 순회만 필요하면 reversed(), 새 리스트가 필요하면 [::-1], 원본을 뒤집어도 되면 reverse()가 가장 직관적입니다. 직접 한번 해보시면 궁금한 점이나 문의 사항이 있으시면 언제든지 댓글 및 질문 주시면 답변 드릴 수 있도록 하겠습니다.
파이썬 리스트 비교 6가지 방법: 순서/중복/교집합/차집합/인덱스 비교
파이썬 리스트 비교 6가지 방법: 순서/중복/교집합/차집합/인덱스 비교 이번 포스팅에서는 파이썬에서 자주 사용하는 리스트를 비교하는 방법을 정리해보겠습니다. 리스트 비교는 단순히 값만
appia.tistory.com
'Python > Python 응용' 카테고리의 다른 글
| 파이썬[Python] 단어들의 사용빈도 확인하기 (3) | 2020.03.10 |
|---|---|
| 파이썬[Python] Dictionary(딕셔너리) 데이터 출력하기 (2) | 2020.03.09 |
| 파이썬[Python] 051 문자열 나누기 split() (1) | 2020.02.28 |
| 파이썬[Python] 050 리스트 맴버 섞기(Shuffle), 리스트 맴버 총합 구하기 (0) | 2020.02.27 |
| 파이썬[Python] 049 리스트에서 맴버 정렬하기(sort,sorted) (0) | 2020.02.26 |