在 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 和 enumerate

在這種方法中,我們使用 enumerate 列出列表的每個元素,然後應用 sorted 和 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']

更新於:2020年8月26日

162 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.