在 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']
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP