Python:最长子列表的长度?

时间:2012-11-15 15:37:17

标签: python list

  

可能重复:
  Python’s most efficient way to choose longest string in list?

我有一个清单L

L = [[1,2,3],[5,7],[1,3],[77]]

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

2 个答案:

答案 0 :(得分:52)

max(L,key=len)将为您提供长度最长的对象(示例中为[1,2,3]) - 要实际获取长度(如果您只关心它),您可以执行{{1}这有点难看 - 我把它分成2行。或者您可以使用ecatamur提供的版本。

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


最后,请注意len(max(L,key=len))不是key=function特有的功能。许多python内置函数(maxmaxminsorted,...)使用此特定关键字参数。绝对值得投入一点时间来了解它是如何工作的以及它通常做什么。

答案 1 :(得分:13)

尝试理解:

max(len(l) for l in L)