Python에서는 내장 메서드인 reverse() 또는 reversed()를 사용해 리스트를 간편하게 역순으로 뒤집을 수 있습니다. 이 두 방법은 새로운 리스트를 만들지 않고도 원본 리스트의 요소 순서를 반전시켜 줍니다.
Python 리스트와 리스트 슬라이싱 기초 다지기
리스트를 뒤집는 것은 모든 프로그래밍 언어에서 자주 사용되는 작업입니다. 예를 들어, 고객 이름 목록이 알파벳 역순으로 저장되어 있을 때 이를 알파벳 순서대로 보고 싶다면 리스트를 뒤집으면 됩니다. 또한 긴 목록에서 맨 아래 데이터를 빠르게 확인하고 싶을 때도 역순 정렬이 유용합니다.
이번 튜토리얼에서는 Python에서 리스트를 역순으로 정렬하는 가장 효과적인 세 가지 방법을 하나씩 살펴보겠습니다.
Python에서 리스트는 여러 항목을 담는 배열입니다. 문자열, 불리언(Boolean), 숫자, 객체 등 어떤 데이터 타입이든 담을 수 있으며, 원하는 만큼 많은 요소를 저장할 수 있습니다. 많은 데이터를 다룰 때는 여러 개의 변수를 선언하는 것보다 하나의 리스트로 관리하는 것이 훨씬 효율적입니다.
리스트 슬라이싱
리스트를 뒤집는 데 슬라이싱 지식이 필수는 아니지만, 알아두면 큰 도움이 됩니다. 먼저 Python에서 리스트를 선언하는 방법부터 확인해 보겠습니다.
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"]
위 코드에서 studentNames 변수에 학생 이름 네 개를 담은 리스트를 할당했습니다. 리스트의 각 항목에는 인덱스 번호가 부여되며, 인덱스는 0부터 시작합니다. 이 인덱스 값을 활용하면 리스트에서 특정 값에 접근할 수 있습니다.
| Hannah | Imogen | Lewis | Peter |
| 0 | 1 | 2 | 3 |
예를 들어 리스트에서 Imogen이라는 값을 가져오려면 다음과 같이 코드를 작성합니다.
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"] print(studentNames[1])
학생 이름 변수를 선언한 뒤, 인덱스 값이 1인 항목을 가져오도록 요청했습니다. 결과적으로 Imogen이 출력됩니다.
인덱스 범위를 지정하면 여러 항목을 한 번에 가져올 수도 있습니다.
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"] print(studentNames[1:3])
이 코드의 출력 결과는 다음과 같습니다.
["Imogen", "Lewis"]
슬라이싱의 기본 개념을 익혔으니, 이제 본격적으로 Python에서 리스트를 역순으로 정렬하는 방법을 알아보겠습니다.
Python 리스트 역순 정렬 튜토리얼
Python에서 리스트를 뒤집는 대표적인 세 가지 방법은 다음과 같습니다.
- 슬라이싱(Slicing)을 활용한 역순 정렬
- reverse() 메서드를 활용한 역순 정렬
- reversed() 함수를 활용한 역순 정렬
방법 1: 슬라이싱으로 역순 정렬하기
첫 번째 방법은 슬라이싱 트릭을 활용하는 것입니다. 문법은 다음과 같습니다.
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"] print(studentNames[::-1])
출력 결과:
["Peter", "Lewis", "Imogen", "Hannah"]
여기서 [::-1]은 리스트 전체를 한 칸씩 거꾸로 건너뛰며 읽으라는 의미로, 결과적으로 리스트가 역순으로 출력됩니다. 이 방법은 간결하지만 주의할 점이 있습니다. 슬라이싱은 원본 리스트의 복사본을 새로 생성하기 때문에 리스트가 클 경우 메모리를 추가로 소모하게 됩니다. 따라서 대용량 데이터를 다룰 때는 비효율적일 수 있습니다.
방법 2: reverse() 메서드로 역순 정렬하기
두 번째 방법은 내장 메서드인 reverse()를 사용하는 것입니다. 이 메서드는 리스트 객체의 내용을 제자리(in-place)에서 뒤집습니다. 즉, 새로운 리스트를 만들지 않고 원본 리스트 자체를 수정합니다.
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"] studentNames.reverse() print(studentNames)
출력 결과:
["Peter", "Lewis", "Imogen", "Hannah"]
주의할 점은 reverse() 메서드 자체는 반환값으로 None을 돌려준다는 것입니다. 따라서 뒤집힌 리스트를 확인하려면 위 예제처럼 리스트를 다시 출력해야 합니다. 이 방법은 새로운 리스트를 생성하지 않아 메모리 효율이 뛰어나고, 문법도 명확하고 간결합니다.
방법 3: reversed() 함수로 역순 정렬하기
세 번째 방법은 내장 함수인 reversed()를 사용하는 것입니다. 이 함수는 역방향 반복자(reverse iterator)를 생성하여 리스트의 요소를 역순으로 순회합니다. 새로운 리스트를 만들지 않고, 원본 리스트도 수정하지 않는다는 점이 특징입니다.
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"] for i in reversed(studentNames): print(i)
출력 결과:
"Peter" "Lewis" "Imogen" "Hannah"
만약 역순으로 정렬된 리스트의 복사본이 실제로 필요하다면, list() 함수와 함께 사용하면 됩니다.
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"] list(reversed(studentNames))
출력 결과:
["Peter", "Lewis", "Imogen", "Hannah"]
이 방법 역시 매우 직관적입니다. 원본 리스트의 모든 값을 포함하되 순서만 반전된 새로운 리스트가 생성됩니다.
마무리
지금까지 Python에서 리스트를 역순으로 정렬하는 다양한 방법을 살펴보았습니다. 먼저 문자열이나 객체 등 여러 항목을 담는 배열인 리스트의 기본 개념과 인덱스 값을 복습했고, 이어서 리스트를 뒤집는 세 가지 방법을 각각의 예제 코드와 함께 학습했습니다.
실무에서는 세 가지 방법 중 상황에 맞는 하나만 골라 사용하면 됩니다. 하지만 세 가지 방법을 모두 이해해 두면, 다른 개발자가 작성한 코드에서 서로 다른 방식으로 리스트를 뒤집는 경우에도 쉽게 해석하고 유지보수할 수 있다는 장점이 있습니다.