리스트에 담긴 여러 문자열 중에서 모음(vowel)의 개수가 가장 많은 요소를 찾아 출력해야 하는 경우, 리스트 컴프리헨션(list comprehension)과 반복문을 조합하면 간단하게 해결할 수 있습니다.
예제
다음은 그 구현 과정을 보여주는 예제입니다.
my_list = ["this", "week", "is", "going", "great"]
print("The list is :")
print(my_list)
my_result = ""
max_length = 0
for element in my_list:
vowel_length = len([ch for ch in element if ch in ['a', 'e', 'o', 'u', 'i']])
if vowel_length > max_length:
max_length = vowel_length
my_result = element
print("The result is :")
print(my_result)출력 결과
The list is : ['this', 'week', 'is', 'going', 'great'] The result is : week
코드 설명
- 문자열로 이루어진 리스트를 정의하고 콘솔에 출력합니다.
- 최종 결과를 저장할 빈 문자열 변수를 생성합니다.
- 'max_length'라는 변수를 정의하고 초기값으로 0을 할당합니다.
- 리스트를 순회하면서 리스트 컴프리헨션으로 각 문자열에 포함된 모음을 추출합니다.
- 추출된 모음들을 리스트로 만든 뒤, 그 길이(모음 개수)를 변수에 저장합니다.
- 해당 길이가 기존의 'max_length'보다 크면 'max_length' 값을 갱신합니다.
- 조건을 만족하는 요소를 결과 변수에 할당합니다.
- 최종적으로 모음이 가장 많은 요소를 콘솔에 출력합니다.
더 간결한 방법: max() 함수 활용
위 로직은 max() 함수의 key 매개변수를 사용하면 한 줄로도 작성할 수 있습니다.
my_result = max(my_list, key=lambda word: sum(1 for ch in word if ch in 'aeiou')) print(my_result) # week
이 방식은 별도의 임시 변수나 반복문 없이 각 문자열의 모음 개수를 기준으로 최댓값을 가진 요소를 바로 반환하므로, 코드가 더 짧고 가독성이 좋습니다.