파이썬에서 리스트는 그 안에 또 다른 리스트를 요소로 포함할 수 있습니다. 이처럼 중첩된 리스트를 하위 리스트(sublist)라고 부르며, 데이터를 계층 구조로 다룰 때 자주 사용됩니다. 이 글에서는 주어진 리스트에서 각 하위 리스트의 첫 번째 요소만 추출하는 여러 가지 방법을 예제 코드와 함께 살펴보겠습니다.
1. for 반복문 사용하기
가장 직관적이고 기본적인 방법입니다. 각 하위 리스트를 순회하면서 인덱스 0에 해당하는 항목을 하나씩 가져오는 방식으로, 초보자도 쉽게 이해할 수 있습니다.
예제 코드
Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12,3,7]]
print("Given List:\n",Alist)
print("First Items from sublists:\n")
for item in Alist:
print((item[0]))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Given List: [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]] First Items from sublists: Mon Tue 12
2. zip과 * 연산자 사용하기
* 연산자는 하위 리스트를 언패킹(unpacking)하여 개별 요소에 접근할 수 있도록 해줍니다. 이를 활용해 각 하위 리스트의 인덱스 0 요소에 접근한 뒤, zip으로 묶어서 첫 번째 요소들만 모은 리스트를 만들 수 있습니다.
예제 코드
Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12,3,7]]
print("Given List:\n",Alist)
print("\n First Items from sublists:\n")
print(list(list(zip(*Alist))[0]))
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Given List: [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]] First Items from sublists: ['Mon', 'Tue', 12]
3. itemgetter 사용하기
operator 모듈의 itemgetter(i)는 딕셔너리, 리스트, 튜플과 같은 이터러블 객체를 입력받아 i번째 요소를 반환하는 호출 가능한(callable) 객체를 생성합니다. 이를 map 함수와 함께 사용하면 간결하게 첫 번째 요소들을 추출할 수 있습니다.
예제 코드
from operator import itemgetter
Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12,3,7]]
print("Given List:\n",Alist)
print("\n First Items from sublists:\n")
print(list(map(itemgetter(0), Alist)))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Given List: [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]] First Items from sublists: ['Mon', 'Tue', 12]
4. 보너스: 리스트 컴프리헨션 사용하기
파이썬다운(Pythonic) 방법을 선호한다면 리스트 컴프리헨션(list comprehension)이 가장 깔끔한 선택입니다. 한 줄로 간단히 작성할 수 있으며 가독성도 뛰어납니다.
예제 코드
Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12,3,7]] first_items = [sub[0] for sub in Alist] print(first_items)
실행 결과
['Mon', 'Tue', 12]
마무리
각 방법의 특징을 정리하면 다음과 같습니다.
- for 반복문: 초보자에게 익숙하고 로직 확장이 쉬움
- zip과 *: 언패킹을 활용한 함수형 스타일
- itemgetter + map: 성능이 좋고 대량 데이터 처리에 유리
- 리스트 컴프리헨션: 가장 간결하고 파이썬다운 문법
상황과 코드 스타일에 맞는 방법을 선택해 사용하시면 됩니다.