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

파이썬에서 한 리스트가 다른 리스트에서 처음 나타나는 위치 찾는 방법

프로그래밍을 하다 보면 한 리스트가 다른 리스트에서 처음 나타나는 지점, 즉 두 리스트가 처음으로 겹치는 요소를 찾아야 하는 경우가 있습니다. 이럴 때 파이썬에서는 'set'(집합)'next' 메서드를 활용하면 간단하고 효율적으로 해결할 수 있습니다.

예제 코드

다음은 두 리스트에서 첫 번째로 일치하는 요소를 찾는 예제입니다.

my_list_1 = [23, 64, 34, 77, 89, 9, 21]
my_list_2 = [64, 10, 18, 11, 0, 21]
print("The first list is :")
print(my_list_1)
print("The second list is :")
print(my_list_2)

my_list_2 = set(my_list_2)

my_result = next((ele for ele in my_list_1 if ele in my_list_2), None)

print("The result is :")
print(my_result)

실행 결과

The first list is :
[23, 64, 34, 77, 89, 9, 21]
The second list is :
[64, 10, 18, 11, 0, 21]
The result is :
64

코드 설명

  • 두 개의 리스트를 정의한 뒤 콘솔에 출력하여 내용을 확인합니다.

  • 두 번째 리스트를 set() 함수로 집합 자료형으로 변환합니다.

  • 집합으로 변환하면 고유한 요소들만 유지되고, 중복된 요소들은 자동으로 제거됩니다.

  • next() 메서드와 제너레이터 표현식을 사용해 첫 번째 리스트를 순회하면서 두 번째 리스트(집합)에 포함된 첫 번째 요소를 찾습니다.

  • 일치하는 요소가 없을 경우를 대비해 기본값 None을 지정하여 오류 없이 안전하게 처리합니다.

  • 찾은 결과는 변수에 할당된 후 콘솔에 출력됩니다.

왜 set을 사용할까요?

리스트에서 특정 요소의 존재 여부를 확인할 때는 평균적으로 O(n)의 시간이 걸리지만, 집합(set)은 해시 기반 구조이기 때문에 조회 속도가 O(1)로 매우 빠릅니다. 따라서 리스트를 미리 집합으로 변환해두면 대량의 데이터를 다룰 때도 성능 저하 없이 빠르게 일치 여부를 검사할 수 있다는 장점이 있습니다.