Python 프로그래밍을 하다 보면 리스트 전체가 아니라 마지막 몇 개의 요소만 필요한 경우가 자주 있습니다. 예를 들어 최근 로그 기록이나 가장 최근에 추가된 데이터만 확인할 때 유용하죠. 이번 글에서는 리스트의 마지막 N개 요소를 추출하는 두 가지 대표적인 방법을 소개합니다.
1. 슬라이싱(Slicing) 활용하기
가장 간단하고 널리 쓰이는 방법은 음수 인덱스를 이용한 슬라이싱입니다. Python에서 인덱스에 음수를 사용하면 리스트의 끝에서부터 역방향으로 접근할 수 있습니다. 추출할 요소의 개수를 n이라고 할 때, listA[-n:]처럼 작성하면 끝에서 n번째 위치부터 마지막까지의 요소를 한 번에 가져올 수 있습니다.
예제 코드
listA = ['Mon','Tue','Wed','Thu','Fri','Sat']
# 주어진 리스트
print("Given list : \n", listA)
# 추출할 요소 개수 N 초기화
n = 4
# 리스트 슬라이싱으로 마지막 N개 요소 추출
res = listA[-n:]
# 결과 출력
print("The last 4 elements of the list are : \n", res)실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list : ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] The last 4 elements of the list are : ['Wed', 'Thu', 'Fri', 'Sat']
슬라이싱 방식은 코드가 짧고 직관적이며, 별도의 모듈 import 없이 동작하기 때문에 대부분의 상황에서 가장 권장되는 방법입니다.
2. islice() 함수 활용하기
itertools 모듈의 islice() 함수를 사용하는 방법도 있습니다. 이 함수는 반복 가능한 객체(iterable)에서 원하는 범위의 요소만 잘라낼 때 사용됩니다. 리스트를 reversed()로 뒤집은 뒤 앞에서 n개를 추출하고, 다시 원래 순서로 되돌리는 방식으로 동작합니다.
예제 코드
from itertools import islice
listA = ['Mon','Tue','Wed','Thu','Fri','Sat']
# 주어진 리스트
print("Given list : \n", listA)
# 추출할 요소 개수 N 초기화
n = 4
# reversed와 islice를 조합해 마지막 N개 요소 추출
res = list(islice(reversed(listA), 0, n))
# 원래 순서대로 되돌리기
res.reverse()
# 결과 출력
print("The last 4 elements of the list are : \n", res)실행 결과
위 코드를 실행하면 슬라이싱 방식과 동일한 결과를 얻을 수 있습니다.
Given list : ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] The last 4 elements of the list are : ['Wed', 'Thu', 'Fri', 'Sat']
islice()는 리스트뿐만 아니라 제너레이터나 이터레이터 등 다양한 반복 가능한 객체에 적용할 수 있다는 장점이 있습니다. 다만 일반 리스트에서는 슬라이싱보다 코드가 다소 길어지기 때문에, 특별한 이유가 없다면 첫 번째 방법을 사용하는 것이 효율적입니다.
정리
- 슬라이싱(
list[-n:]): 가장 간단하고 빠른 방법으로, 일상적인 코드에서 가장 많이 사용됩니다. - islice(): 이터레이터 기반 데이터를 다룰 때 유용하며, 메모리 효율성이 중요한 대용량 데이터 처리에 적합합니다.
두 방법 모두 동일한 결과를 반환하므로, 상황에 맞게 선택하여 사용하시면 됩니다.