Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 중첩 리스트의 모든 요소 개수 구하는 방법

데이터 처리 작업을 하다 보면 리스트에 포함된 요소의 개수를 세어야 하는 경우가 자주 발생합니다. 그런데 리스트 안에 또 다른 리스트가 중첩되어 있으면 단순히 len() 함수만으로는 정확한 개수를 구하기 어렵습니다. 이 글에서는 중첩 리스트까지 고려하여 리스트 내 모든 요소의 개수를 효과적으로 세는 다양한 방법을 소개합니다.

1. For 루프와 리스트 컴프리헨션 활용

이 방법은 두 개의 for 루프를 사용해 리스트의 중첩 구조를 순회합니다. 아래 예제에서는 내부 요소의 개수가 서로 다른 중첩 리스트를 다루며, 리스트 컴프리헨션으로 리스트를 평탄화(flatten)한 뒤 len() 함수를 적용해 전체 요소 개수를 계산합니다.

예제 코드

listA = [[2,9, 6], [5, 'a'], [0], [12,'c', 9, 3]]

# 주어진 리스트
print("Given list : ",listA)

res = len([x for y in listA for x in y])

# 결과 출력
print("Total count of elements : " ,res)

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Given list : [[2, 9, 6], [5, 'a'], [0], [12, 'c', 9, 3]]
Total count of elements : 10

2. itertools.chain 활용

이 방법은 표준 라이브러리인 itertools 모듈의 chain 메서드를 활용합니다. chain(*listA)는 중첩 리스트의 모든 내부 요소를 꺼내어 하나의 시퀀스로 평탄화하며, 이를 list()로 변환한 후 len() 함수를 적용하면 최종 요소 개수를 구할 수 있습니다.

예제 코드

from itertools import chain
listA = [[2,9, 6], [5, 'a'], [0], [12,'c', 9, 3]]

# 주어진 리스트
print("Given list : ",listA)

res = len(list(chain(*listA)))

# 결과 출력
print("Total count of elements : " ,res)

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Given list : [[2, 9, 6], [5, 'a'], [0], [12, 'c', 9, 3]]
Total count of elements : 10

어떤 방법을 선택해야 할까?

두 방법 모두 동일한 결과를 반환하지만 상황에 따라 선택 기준이 달라질 수 있습니다. 리스트 컴프리헨션은 별도의 임포트 없이 간결하게 사용할 수 있고, chain은 대용량 데이터를 다룰 때 제너레이터 기반으로 동작해 메모리 효율성이 더 좋습니다. 참고로 중첩 깊이가 한 단계인 경우에는 sum(len(sub) for sub in listA)처럼 각 하위 리스트의 길이를 합산하는 방법도 유용합니다.