在 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