Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 주어진 목록에서 k 가장 긴 단어 찾기

<시간/>

다양한 길이의 단어가 많이 포함된 목록에서 가장 긴 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']