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

Python으로 문자열 리스트에서 부분 문자열에 해당하는 모든 문자열 찾기

주어진 문자열 리스트 안에서 다른 문자열의 부분 문자열(substring)에 해당하는 모든 문자열을 찾아야 하는 경우, 파이썬의 setlist 자료형을 활용하면 아주 간단하게 해결할 수 있습니다.

핵심 아이디어는 두 리스트를 중첩 반복하며 조건에 맞는 요소만 골라내고, set으로 중복을 제거한 뒤 다시 list로 변환하는 것입니다.

예제 코드

아래는 두 개의 문자열 리스트에서 부분 문자열 관계에 있는 모든 문자열을 찾는 전체 예제입니다.

my_list_1 = ["Hi", "there", "how", "are", "you"]
my_list_2 = ["Hi", "there", "how", "have", "you", 'been']
print("The first list is :")
print(my_list_1)
print("The second list is :")
print(my_list_2)

my_result = list(set([elem_1 for subset_1 in my_list_1 for elem_1 in my_list_2 if elem_1 in subset_1]))

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

실행 결과

The first list is :
['Hi', 'there', 'how', 'are', 'you']
The second list is :
['Hi', 'there', 'how', 'have', 'you', 'been']
The result is :
['there', 'you', 'Hi', 'how']

코드 설명

  • 두 개의 문자열 리스트(my_list_1, my_list_2)를 정의하고 콘솔에 출력합니다.

  • 리스트 컴프리헨션(list comprehension)을 사용해 두 리스트를 중첩 반복하면서, in 연산자로 elem_1subset_1 안에 포함되어 있는지 검사합니다.

  • 조건을 만족하는 요소들만 모은 뒤, set()으로 감싸 중복 값을 제거하고 고유한 값만 남깁니다.

  • list()를 사용해 집합을 다시 리스트 형태로 변환합니다.

  • 최종 결과를 my_result 변수에 저장한 후 콘솔에 출력합니다.

참고 사항

set은 요소의 순서를 보장하지 않기 때문에, 실행할 때마다 결과 리스트의 순서가 달라질 수 있습니다. 순서가 중요하다면 sorted() 함수로 정렬하거나, dict.fromkeys()처럼 순서를 유지하면서 중복을 제거하는 방법을 사용하는 것이 좋습니다.