在 Python 中查找给定列表中的 k 个最长单词

pythonserver side programmingprogramming更新于 2025/10/11 13:00:17

我们有一个场景,我们必须从包含许多不同长度的单词的列表中选择前 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']

相关文章


有用资源