다양한 길이의 단어가 많이 포함된 목록에서 가장 긴 n개의 단어를 선택해야 하는 시나리오가 있습니다. 이 기사에서는 이를 달성하기 위한 다양한 접근 방식을 살펴보겠습니다.
count() 및 sorted() 사용
목록의 시작 부분에서 가장 긴 단어를 사용할 수 있도록 먼저 목록의 요소를 역순으로 정렬합니다. 그런 다음 각 단어의 길이를 찾고 개수의 결과를 변수에 추가합니다. 마지막으로 우리가 필요로 하는 가장 긴 단어의 필요한 수를 잘라냅니다.
예
from itertools import count def longwords(l, x): c = count() return sorted(l, key=lambda i: (len(i), next(c)), reverse=True)[:x] listA = ['Earth','Moonshine','Aurora','Snowflakes','Sunshine'] n = 2 print(longwords(listA, n))
출력
위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -
['Snowflakes', 'Moonshine']
zip 및 열거 사용
이 접근 방식에서는 열거를 사용하여 목록의 각 요소를 나열한 다음 정렬 및 zip 함수를 적용하여 개수를 얻습니다. 음수 길이 값은 정렬의 역순을 나타내며 마지막으로 필요한 개수만큼 슬라이스합니다.
예
def longwords(l, x): idx, words = zip(*sorted(enumerate(l), key = lambda i: (-len(i[1]), -i[0]))[:x]) return list(words) listA = ['Earth','Moonshine','Aurora','Snowflakes','Sunshine'] n = 2 print(longwords(listA, n))
출력
위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -
['Snowflakes', 'Moonshine']