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

Python으로 다른 리스트에서 최소 지정 개수의 문자를 포함한 문자열 추출하기

다른 리스트에서 특정 개수 이상의 문자를 포함하는 문자열을 추출해야 하는 경우, 리스트 컴프리헨션(list comprehension)을 활용하면 코드를 간결하고 효율적으로 작성할 수 있습니다.

예제

아래는 실제 구현 과정을 보여주는 예시입니다.

my_list = ["Python", "is", "fun", "to", "learn"]

print("The list is :")
print(my_list)

my_char_list = ['e', 't', 's', 'm', 'n']

my_key = 2
print("The value of key is ")
print(my_key)

my_result = [element for element in my_list if sum(ch in my_char_list for ch in element) >= my_key]

print("The resultant list is :")
print(my_result)

출력 결과

The list is :
['Python', 'is', 'fun', 'to', 'learn']
The value of key is
2
The resultant list is :
['Python', 'learn']

코드 설명

  • 문자열로 이루어진 리스트를 정의하고 콘솔에 출력합니다.

  • 기준이 되는 문자(character)들의 리스트를 별도로 정의합니다.

  • 필요한 최소 문자 개수인 key 값을 정의하고 콘솔에 출력합니다.

  • 리스트 컴프리헨션을 사용하여 원본 리스트의 각 요소를 순회하면서, 해당 문자열 안에서 기준 문자 리스트에 포함된 문자의 개수를 sum() 함수로 계산합니다. 여기서 ch in my_char_list는 참(True)일 경우 1로, 거짓(False)일 경우 0으로 처리되므로 조건을 만족하는 문자 수를 손쉽게 더할 수 있습니다.

  • 계산된 문자 개수 합계를 key 값과 비교합니다.

  • 합계가 key 값보다 크거나 같은 요소만 결과 리스트에 저장되며, 이 리스트는 변수에 할당됩니다.

  • 최종 결과 리스트가 콘솔에 출력됩니다.

위 예제에서는 'Python'과 'learn' 두 단어가 각각 기준 문자('e', 't', 's', 'm', 'n')를 2개 이상 포함하고 있으므로 결과 리스트에 포함되었습니다. 이처럼 리스트 컴프리헨션과 sum() 함수를 조합하면 반복문 없이도 필터링 로직을 한 줄로 깔끔하게 표현할 수 있습니다.