使用max()函数查找所有最大长度的字符串

2024-04-19 16:07:54 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Longest strings from list

lst = [str1, str2, str3, ...]
max(lst, key=len)

这只返回一个最大长度的字符串。有没有办法在不定义其他程序的情况下做到这一点?在


Tags: key字符串fromlenlongestmaxliststrings
1条回答
网友
1楼 · 发布于 2024-04-19 16:07:54

为了完整起见,^{}也是一个选项:

maxlens = filter(lambda s: len(s)==max(myList, key=len), myList)
网友
2楼 · 发布于 2024-04-19 16:07:54

如果您想获得具有max length的值,那么您可能需要按长度对列表进行排序;然后您只需要获取所有值,直到长度发生变化。itertools提供了多种方法-takewhilegroupby等。例如:

>>> l = ['abc', 'd', 'ef', 'ghi', 'j']
>>> l2 = sorted(l, key=len, reverse=True)
>>> groups = itertools.groupby(len, l2)
>>> maxlen, maxvalues = next(groups)
>>> print(maxlen, list(maxvalues))
3, ['abc', 'ghi']

如果你想要一条直线:

^{pr2}$

当然,如果您希望先查找最大长度,然后再查找所有匹配值,则始终可以对列表进行两次遍历:

>>> maxlen = len(max(l, key=len))
>>> maxvalues = (value for value in l if len(value) == maxlen)
>>> print(maxlen, list(maxvalues))
网友
3楼 · 发布于 2024-04-19 16:07:54

怎么样:

maxlen = len(max(l, key=len)) 
maxlist = [s for s in l if len(s) == maxlen]

相关问题 更多 >