11

我的元组看起来像这样(对于一组特定的生成值)

tTrains = [ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]

现在,我需要找到这个元组/列表中最长元组的长度。我总是可以使用 for 循环,遍历所有子元组并执行此操作。但我想问一下是否有相同的预定义功能。

当前使用情况

这是我现在要使用的

max = 0
for i in range( len(tTrains) ):
  if iMax < len( i ):
    iMax = len( i )
4

3 回答 3

15
tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
max(map(len,tup))

结果:

4
于 2012-04-07T21:17:12.677 回答
8

您不应该将max其用作变量名,因为这会影响同名的内置函数。这个内置max()函数可用于计算可迭代的最大值。

您当前有一个元组列表,但您想要列表长度的最大值。要获取此列表,您可以使用列表推导:

[len(t) for t in tuples]

(请注意,我将您的列表重命名tupletuples,因为tuple会隐藏同名的内置类型。)

现在您可以应用max()到这个列表,甚至更好地应用到以类似方式构造的生成器表达式。

于 2012-04-07T21:14:18.497 回答
8

另一种解决方案:

>>> tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
>>> len(max(tup, key=len))
4

这意味着“给我 的最大元素的长度tup,其中“最大”由元素的长度定义”。

于 2012-04-07T22:16:54.477 回答