29

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

我有一个清单 L

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

我想返回最长子列表的长度而不需要遍历它们,在本例中为 3,因为 [1,2,3] 的长度为 3,它是四个子列表中最长的。我试过 len(max(L)) 但这并没有达到我想要的效果。有什么方法可以做到这一点,还是我唯一的方法是循环?

4

2 回答 2

61

max(L,key=len)将为您提供长度最长的对象([1,2,3]在您的示例中)-要实际获得长度(如果这是您所关心的全部),您可以这样做len(max(L,key=len))有点难看-我将其分成两行。或者您可以使用 ecatamur 提供的版本。

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


最后,请注意,这key=function不是特定于max. 许多 python 内置函数 ( max, min, sorted, itertools.groupby,...) 使用这个特定的关键字参数。绝对值得花一点时间来了解它是如何工作的以及它通常做什么。

于 2012-11-15T15:38:13.463 回答
18

尝试理解:

max(len(l) for l in L)
于 2012-11-15T15:38:17.940 回答