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

Python 리스트에서 None 값의 인덱스 위치 찾는 방법

데이터 분석을 하다 보면 리스트에 None 값이 포함되어 있는 경우를 자주 마주하게 됩니다. None 값은 수학 연산이나 문자열 연산 등에 직접 사용할 수 없기 때문에, 해당 값의 위치를 먼저 파악한 뒤 변환하거나 적절하게 처리해야 합니다. 이 글에서는 리스트 내 None 값의 인덱스를 찾는 두 가지 대표적인 방법을 소개합니다.

1. range() 함수 활용하기

range() 함수와 len() 함수를 조합하면 리스트의 각 요소를 순회하면서 None과 비교하고, 해당 인덱스 위치를 추출할 수 있습니다. 일반적으로 for 루프 또는 리스트 컴프리헨션(list comprehension)을 사용해 구현합니다.

예제

listA = ['Sun', 'Mon', None, 'Wed', None, None]

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

# range() 사용
positions = [i for i in range(len(listA)) if listA[i] == None]

# 결과 출력
print("None value positions : ", positions)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Given list : ['Sun', 'Mon', None, 'Wed', None, None]
None value positions : [2, 4, 5]

2. enumerate() 함수 활용하기

enumerate() 함수를 사용하는 방법도 있습니다. enumerate()는 리스트를 순회하면서 각 요소와 그 인덱스를 함께 반환하므로, 요소 값을 None과 비교한 후 해당 위치를 손쉽게 선택할 수 있습니다. 인덱스 계산을 직접 하지 않아도 되므로 코드가 더 간결하고 가독성이 좋습니다.

예제

listA = ['Sun', 'Mon', None, 'Wed', None, None]

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

# enumerate() 사용
positions = [i for i, val in enumerate(listA) if val == None]

# 결과 출력
print("None value positions : ", positions)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Given list : ['Sun', 'Mon', None, 'Wed', None, None]
None value positions : [2, 4, 5]

마무리 및 팁

두 방법 모두 동일한 결과를 반환하지만, enumerate()를 사용하는 방식이 인덱스와 값을 동시에 다룰 수 있어 더 파이썬다운(Pythonic) 코드로 평가받습니다. 또한 실무에서는 val == None 대신 val is None을 사용하는 것이 권장됩니다. is 연산자는 객체의 정체성(identity)을 비교하기 때문에 None 검사 시 더 명확하고 안전하며, PEP 8 스타일 가이드에서도 이를 표준으로 제안하고 있습니다.