考虑以下代码:
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()
函数的解释,如果输入是两个或更多参数,则应返回“最大参数”。那么如何定义几个集合中的“最大”呢?
答案 0 :(得分:5)
通过设置覆盖<
,<=
,>
和>=
来进行子集和超集的比较,不被视为可订购的。
因此,没有设置“最大”或“最小” 。
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()
也未定义。