문자열 목록에서 지정된 문자를 기준으로 요소를 걸러내야 하는 경우, 리스트 컴프리헨션(list comprehension)과 append 메서드를 활용하면 간단하게 해결할 수 있습니다.
아래는 실제 동작 과정을 보여주는 예제입니다.
예제
my_list = ["hi", "is", "great", "pyn", "pyt"]
print("The list is :")
print(my_list)
my_key = 'n'
print("The value for key is ")
print(my_key)
my_result = []
for sub in my_list:
my_result.append(''.join([element for element in sub if element == my_key]))
print("The result is :")
print(my_result)
출력
The list is : ['hi', 'is', 'great', 'pyn', 'pyt'] The value for key is n The result is : ['', '', '', 'n', '']
코드 설명
문자열로 구성된 리스트를 정의하고 콘솔에 출력합니다.
찾고자 하는 키 값을 정의한 뒤 콘솔에 함께 출력합니다.
결과를 저장할 빈 리스트를 하나 생성합니다.
리스트 컴프리헨션을 사용해 원본 리스트의 각 문자열을 순회하면서, 문자열 내부의 개별 문자가 키와 일치하는지 검사합니다.
일치하는 문자만 골라
join으로 다시 하나의 문자열로 합친 후,append메서드를 통해 결과 리스트에 추가합니다.모든 반복이 끝나면 최종 결과 리스트를 콘솔에 출력합니다.
더 간결한 방법: 한 줄 리스트 컴프리헨션
위의 for 루프와 append 조합은 아래와 같이 리스트 컴프리헨션 하나로 더 간결하게 표현할 수도 있습니다.
my_result = [''.join([ch for ch in sub if ch == my_key]) for sub in my_list]
이 방식은 코드 길이가 짧아질 뿐만 아니라 가독성도 높아져, 파이썬다운(Pythonic) 스타일로 손꼽힙니다. 문자열 필터링 로직을 자주 작성한다면 이 패턴을 익혀두면 큰 도움이 됩니다.