Dada una lista de palabras y un entero positivo K, escriba un programa Python para encontrar k palabras más largas en la lista en orden descendente de longitud.
Ejemplos:
Input : lst = ['am', 'watermelon', 'girl', 'boy', 'colour'], K = 3 Output : ['watermelon', 'colour', 'girl'] Input : ['see', 'I', 'geek', 'on', 'brain'], K = 4 Output : ['brain', 'geek', 'see', 'on']
Método #1: Usar count() de itertools
Primero, clasifique el ‘lst’ en función de la longitud de las palabras y luego en función de una variable de contador, de modo que las palabras que ocurran más tarde tengan mayor prioridad y, por lo tanto, extraiga k variables.
# Python3 program to Find # longest K words in a list from itertools import count def longest_word(lst, K): cnt = count() return sorted(lst, key = lambda w : (len(w), next(cnt)), reverse = True)[:K] # Driver code lst = ['am', 'watermelon', 'girl', 'boy', 'colour'] K = 3 print(longest_word(lst, K))
Producción:
['watermelon', 'colour', 'girl']
Método #2: Usar sorted()
# Python3 program to Find # longest K words in a list def longest_word(lst, K): idx, words = zip(*sorted(enumerate(lst), key = lambda w: (-len(w[1]), -w[0]))[:K]) return list(words) # Driver code lst = ['am', 'watermelon', 'girl', 'boy', 'colour'] K = 3 print(longest_word(lst, K))
Producción:
['watermelon', 'colour', 'girl']
Método #3: Usando el montón
# Python3 program to Find # longest K words in a list import heapq from operator import itemgetter def longest_word(lst, K): # constructing heap heap = [(0, i, '') for i in range(K)] heapq.heapify(heap) # To maintain top K elements for i, word in enumerate(lst): item = (len(word), i, word) if item > heap[0]: heapq.heapreplace(heap, item) return sorted(list(map(itemgetter(2), heap)), key = len, reverse = True) # Driver code lst = ['am', 'watermelon', 'girl', 'boy', 'colour'] K = 3 print(longest_word(lst, K))
Producción:
['watermelon', 'colour', 'girl']
Publicación traducida automáticamente
Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA