在 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']
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

