我的元组看起来像这样(对于一组特定的生成值)
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 )
tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
max(map(len,tup))
结果:
4
您不应该使用 max
作为变量名称,因为这将隐藏相同名称的内置。 此内置max()
可用于计算可迭代对象的最大值。
您当前有一个元组列表,但您希望元组长度列表的最大值。 要获取此列表,您可以使用列表推导式:
[len(t) for t in tuples]
(请注意,我将列表tuple
重命名为 tuples
,因为tuple
会隐藏同名的内置类型。
现在,您可以将max()
应用于此列表,甚至更好地应用于以类似方式构造的生成器表达式。
另一种解决方案:
>>> tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
>>> len(max(tup, key=len))
4
翻译过来就是"给我tup
最大元素的长度,"最大"由元素的长度定义"。