Python:最长子列表的长度?

IAm*_*man 25 python list

可能重复:
Python在列表中选择最长字符串的最有效方法是什么?

我有一个清单L.

L = [[1,2,3],[5,7],[1,3],[77]]
Run Code Online (Sandbox Code Playgroud)

我想返回最长子列表的长度而不需要循环它们,在这种情况下为3因为[1,2,3]是长度3并且它是四个子列表中最长的.我尝试了len(max(L)),但这并不是我想要的.有没有办法做到这一点,或者是我唯一的循环方式?

mgi*_*son 55

max(L,key=len)会给你一个长度最长的对象([1,2,3]在你的例子中) - 要真正获得长度(如果这就是你所关心的),你可以做len(max(L,key=len))一些有点难看 - 我把它分成2行.或者您可以使用ecatamur提供的版本.

所有这些答案都有循环 - 在我的例子中,循环是隐式的,这通常意味着它们将在优化的本机机器代码中执行.如果你仔细想想,如果不看每一个元素,你怎么能知道哪个元素最长?


最后,请注意,这key=function不是特定于的功能max.很多蟒蛇建宏(中max,min,sorted,itertools.groupby,...)用这种特殊关键字参数.绝对值得投入一点时间来了解它是如何工作的以及它通常做什么.


eca*_*mur 15

尝试理解:

max(len(l) for l in L)
Run Code Online (Sandbox Code Playgroud)

  • @MartijnPieters - 有非常细微的差异。`max(L,key=len)` 给出了最大 `len` 的对象,但它没有给你它的长度 :) (2认同)