다른 리스트에서 특정 개수 이상의 문자를 포함하는 문자열을 추출해야 하는 경우, 리스트 컴프리헨션(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() 함수를 조합하면 반복문 없이도 필터링 로직을 한 줄로 깔끔하게 표현할 수 있습니다.