【问题标题】:Get max length of multi-dimension tuple获取多维元组的最大长度
【发布时间】:2012-04-20 22:52:35
【问题描述】:

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

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 )

【问题讨论】:

  • 元组中额外的, 实际上很重要。括号中的数字只是一个数字,如果您添加,,它将成为一个单项元组。 (我知道它与你无关了。以防万一其他人需要它)

标签: python tuples variable-length


【解决方案1】:
tup=[ (3, ), (1, 3), (6, 8), (4, 6, 8, 9), (2, 4) ]
max(map(len,tup))

结果:

4

【讨论】:

  • 谢谢! ps 今天第一次看函数式编程,这个方案是受它启发的
  • @JoelCornett 没问题,我以“自定义”原因拒绝了编辑
  • 不熟悉地图功能的链接:docs.python.org/2/library/functions.html#map
【解决方案2】:

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

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

[len(t) for t in tuples]

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

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

【讨论】:

  • 这只是为了提问。我的实际变量名称如下:tScreens 用于屏幕元组等。谢谢。
【解决方案3】:

另一种解决方案:

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

意思是'给我tup 的最大元素的长度,其中“最大”由元素的长度定义'。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 2017-06-30
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多