파이썬에서 리스트는 중첩될 수 있습니다. 즉, 리스트의 요소 자체가 또 다른 리스트일 수 있습니다. 이 글에서는 주어진 리스트가 더 큰 외부 리스트의 요소로 존재하는지 확인하는 방법을 대표적인 두 가지 방식으로 살펴보겠습니다.
in 연산자 사용하기
가장 간단하고 직관적인 방법은 in 연산자를 사용하는 것입니다. 내부 리스트가 더 큰 리스트의 요소로 존재하는지 한 줄로 손쉽게 확인할 수 있습니다.
예제 코드
listA = [[-9, -1, 3], [11, -8], [-4, 434, 0]]
search_list = [-4, 434, 0]
# 주어진 리스트 출력
print("Given List :\n", listA)
print("list to Search: ", search_list)
# in 연산자로 존재 여부 확인
if search_list in listA:
print("Present")
else:
print("Not Present")실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Given List : [[-9, -1, 3], [11, -8], [-4, 434, 0]] list to Search: [-4, 434, 0] Present
any() 함수 사용하기
any() 함수를 활용하는 방법도 있습니다. 제너레이터 표현식과 함께 사용하여, 외부 리스트의 각 요소가 검색하려는 리스트와 일치하는지 하나라도 참인 값이 있는지 검사합니다. in 연산자가 내부적으로 동일한 비교(==)를 수행하기 때문에 결과는 같지만, 조건을 확장해야 할 때는 any() 방식이 더 유연하게 활용될 수 있습니다.
예제 코드
listA = [[-9, -1, 3], [11, -8], [-4, 434, 0]]
search_list = [-4, 434, 0]
# 주어진 리스트 출력
print("Given List :\n", listA)
print("list to Search: ", search_list)
# any() 함수로 존재 여부 확인
if any(x == search_list for x in listA):
print("Present")
else:
print("Not Present")실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Given List : [[-9, -1, 3], [11, -8], [-4, 434, 0]] list to Search: [-4, 434, 0] Present
마무리
두 방법 모두 시간 복잡도는 O(n)으로 리스트의 크기에 비례합니다. 단순히 존재 여부만 확인한다면 in 연산자가 가독성 면에서 가장 좋고, 부분 일치나 추가 조건이 필요하다면 any() 함수를 사용하는 것이 효과적입니다.