如何在python中定义“最大”集?

时间:2018-10-17 08:48:01

标签: python set max

考虑以下代码:

b = set([111,222,333,444])
a = set([10,20,30])
print max(a,b,key=len) # set([444, 333, 222, 111])
print max(a,b) # set([10, 20, 30])

我很好奇,如果没有'key'参数,则max()函数将返回一个令人困惑的结果,不是一个包含更多项目的项目,也不是第一个项目较大的项目(10 <111),都不是第一个参数(如果它不知道如何比较输入参数,也许它将返回第一个参数b?)

根据max()函数的解释,如果输入是两个或更多参数,则应返回“最大参数”。那么如何定义几个集合中的“最大”呢?

1 个答案:

答案 0 :(得分:5)

通过设置覆盖<<=>>=来进行子集超集的比较,不被视为可订购的。

因此,没有设置“最大”或“最小”

来自set type documentation

  

issubset(other)
   set <= other

     

测试集合中的每个元素是否都在另一个元素中。

     

set < other

     

测试该集合是否为其他集合的正确子集,即set <= other and set != other

     

issuperset(other)
   set >= other

     

测试其他元素是否在集合中。

     

set > other

     

测试集合是否为其他集合的正确超集,即set >= other and set != other

再往下

  

当且仅当第一个集合是第二个集合的适当子集(是一个子集,但不相等)时,一个集合小于另一个集合。当且仅当第一个集合是第二个集合的适当超集(是一个超集,但不相等)时,一个集合才大于另一个集合。

最后

  

由于集合仅定义部分排序(子集关系),因此list.sort()方法的输出对于集合列表未定义。

max()min()使用相同的顺序定义来从一系列输入中确定最大或最小项,并且由于集合根据子集关系定义顺序,因此{{1 }}和max()也未定义。