繁体   English   中英

列表的最大功能无法正常工作

[英]maximum function of a list is not working properly

我有一个列表列表,我想获得最多的列表。

communities
Out[23]: 
     [[1, 25, 33, 37, 45, 89, 103, 105, 109],
      [19, 29, 30, 35, 55, 79, 94, 101],
      [2, 6, 13, 15, 32, 39, 47, 60, 64, 100, 106],
      [3, 5, 10, 40, 52, 72, 74, 81, 84, 98, 102, 107],
      [44, 48, 57, 66, 75, 86, 91, 92, 110, 112],
      [36, 42, 80, 82, 90],
      [12, 14, 18, 26, 31, 34, 38, 43, 54, 61, 71, 85, 99],
      [0, 4, 9, 16, 23, 41, 93, 104],
      [7, 8, 21, 22, 51, 68, 77, 78, 108, 111],
      [17, 20, 27, 56, 62, 65, 70, 76, 87, 95, 96, 113],
      [11, 24, 50, 59, 63, 69, 97],
      [28, 46, 49, 53, 58, 67, 73, 83, 88, 114]]

max(max(communities))
      Out[24]: 112

它应该给我114但我不明白为什么它给了我112

您可以使用列表理解来做到这一点:

print (max([max(item) for item in communities]))

输出:

114

您也可以这样操作:

max(sum(communities,[]))

输出:114

因为max(communities)[44, 48, 57, 66, 75, 86, 91, 92, 110, 112]

您想遍历社区并通过变量记住每个社区的最大值:

communities_max = 0
for community in communities:
  community_max = max(community)
  if community_max > communities_max:
    communities_max = community_max
print(communities_max) # 114

这是一个有趣的问题,让我先回答为什么会发生,然后告诉您如何解决。

将max函数应用于列表列表时。 默认情况下,它对可迭代词的字典顺序进行排序。 例如,当比较列表时,它会比较两个元素的第一个元素,如果两个元素都相同,则比较下一个2个元素,依此类推,直到列表中一个元素大于另一个元素为止。

例如

a = max([3,3,10],[3,4,5])
print(a)

将选择[3,4,5],因为第二个元素4大于3。

要理想地解决此问题,可以对它进行不同的计算。

由于您的列表列表都是已排序的。

largest_value = max(communities,key = lambda x: x[-1])[-1]

编辑1:帮助人们了解如何对未排序的数组执行此操作。 非常简单

largest_value = max(communities, key = max)

编辑2:抱歉,我误解了max函数的算法选择。 感谢@ikkuh指出。我已将其修改为正确的版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM