获取多维元组的最大长度

hjp*_*r92 11 python tuples variable-length

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

tTrains = [ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
Run Code Online (Sandbox Code Playgroud)

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

目前的用法

这就是我现在要使用的内容

max = 0
for i in range( len(tTrains) ):
  if iMax < len( i ):
    iMax = len( i )
Run Code Online (Sandbox Code Playgroud)

Max*_* Li 14

tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
max(map(len,tup))
Run Code Online (Sandbox Code Playgroud)

结果:

4
Run Code Online (Sandbox Code Playgroud)


Sve*_*ach 8

您不应该使用max变量名称,因为这会影响同名的内置.此内置max()可用于计算可迭代的最大值.

您目前有一个元组列表,但您想要它们的长度列表的最大值.要获取此列表,您可以使用列表解析:

[len(t) for t in tuples]
Run Code Online (Sandbox Code Playgroud)

(请注意,我将列表重命名tupletuples,因为tuple会影响同名的内置类型.)

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


Tim*_*ker 8

另一种方案:

>>> tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
>>> len(max(tup, key=len))
4
Run Code Online (Sandbox Code Playgroud)

这意味着'给我最大元素的长度tup,"最大"由元素的长度定义'.