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

Python 리스트에서 누락된 요소 찾기: range와 set 활용법

숫자로 이루어진 리스트가 있을 때, 해당 숫자들이 연속적인지 확인하고 싶은 경우가 있습니다. 또한 최댓값을 범위의 끝으로 간주했을 때, 그 범위 안에서 어떤 숫자가 빠져 있는지 찾아야 할 수도 있습니다. 이번 글에서는 Python으로 누락된 요소를 찾는 두 가지 방법을 소개합니다.

range와 max 함수 활용하기

첫 번째 방법은 not in 연산자와 함께 for 반복문을 사용하여 특정 범위 내에 존재하지 않는 값을 확인하는 것입니다. 이렇게 찾은 누락 값들을 새로운 리스트에 추가하면, 그 리스트가 곧 결과 집합이 됩니다.

예제 코드

listA = [1,5,6, 7,11,14]

# 원본 리스트 출력
print("Given list : ",listA)

# range와 max 활용
res = [ele for ele in range(max(listA) + 1) if ele not in listA]

# 결과 출력
print("Missing elements from the list : \n" ,res)

실행 결과

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

Given list : [1, 5, 6, 7, 11, 14]
Missing elements from the list :
[0, 2, 3, 4, 8, 9, 10, 12, 13]

set 자료형 활용하기

두 번째 방법은 set 함수를 사용하는 것입니다. 먼저 주어진 범위의 모든 고유한 값을 담은 집합을 만든 뒤, 여기서 원본 리스트의 집합을 빼주면 됩니다. 그러면 연속된 숫자 중 누락된 값들만 포함된 결과 집합을 얻을 수 있습니다.

예제 코드

listA = [1,5,6, 7,11,14]

# 원본 리스트 출력
print("Given list : ",listA)

# set 활용
res = list(set(range(max(listA) + 1)) - set(listA))

# 결과 출력
print("Missing elements from the list : \n" ,res)

실행 결과

위 코드를 실행하면 첫 번째 방법과 동일한 결과를 얻을 수 있습니다.

Given list : [1, 5, 6, 7, 11, 14]
Missing elements from the list :
[0, 2, 3, 4, 8, 9, 10, 12, 13]

마무리

두 방식 모두 동일한 결과를 반환하지만, set을 활용한 차집합 방식이 코드가 더 간결하고 가독성이 좋습니다. 반면 대량의 데이터를 다룰 때는 집합 연산이 O(1) 조회 속도를 제공하므로 성능 면에서도 유리할 수 있습니다. 상황에 맞게 적절한 방법을 선택해 사용하시기 바랍니다.