考虑以下代码:
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])
Run Code Online (Sandbox Code Playgroud)
我很好奇,如果没有'key'参数,max()函数将返回一个令人困惑的结果,它不是包含更多项目的那个,也不是第一个项目更大的那个(10 <111),也不是第一个参数(如果它不知道如何比较输入参数,也许它会返回第一个参数,即b?)
通过max()函数的解释,如果输入是两个或更多个参数,它应该返回"最大的参数".那么如何在几个集合中定义"最大"?
套覆盖<,<=,>并且>=使子集和超集的比较,而不应被视为可订购.
因此,没有"最大"或"最小"设置.
从集类型文档:
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()使用相同的排序定义来确定一系列输入中的最大或最小项,并且因为集合根据子集关系定义排序,所以输出max()和min()未定义.