2024-04-19 16:07:54 发布
网友
Possible Duplicate:Longest strings from list
lst = [str1, str2, str3, ...] max(lst, key=len)
这只返回一个最大长度的字符串。有没有办法在不定义其他程序的情况下做到这一点?在
为了完整起见,^{}也是一个选项:
maxlens = filter(lambda s: len(s)==max(myList, key=len), myList)
如果您想获得具有max length的值,那么您可能需要按长度对列表进行排序;然后您只需要获取所有值,直到长度发生变化。itertools提供了多种方法-takewhile,groupby等。例如:
itertools
takewhile
groupby
>>> 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']
如果你想要一条直线:
当然,如果您希望先查找最大长度,然后再查找所有匹配值,则始终可以对列表进行两次遍历:
>>> maxlen = len(max(l, key=len)) >>> maxvalues = (value for value in l if len(value) == maxlen) >>> print(maxlen, list(maxvalues))
怎么样:
maxlen = len(max(l, key=len)) maxlist = [s for s in l if len(s) == maxlen]
为了完整起见,^{} 也是一个选项:
如果您想获得具有max length的值,那么您可能需要按长度对列表进行排序;然后您只需要获取所有值,直到长度发生变化。
itertools
提供了多种方法-takewhile
,groupby
等。例如:如果你想要一条直线:
^{pr2}$当然,如果您希望先查找最大长度,然后再查找所有匹配值,则始终可以对列表进行两次遍历:
怎么样:
相关问题 更多 >
编程相关推荐