有人可以向我解释为什么我得到这个结果吗?
>>> a = set([(0, 1), (1, 0), (0, 0)])
>>> b = set([(1, 2), (2, 0), (0, 2), (2, 1), (1, 1)])
>>> max(a,b)
set([(0, 1), (1, 0), (0, 0)])
>>> max(b,a)
set([(1, 2), (2, 0), (0, 2), (2, 1), (1, 1)])
python大神给出的解决方案
对于集,a < b
表示a
是b
的子集。您的两个集合都不是另一个集合的子集,因此它们被认为“相等”,这就是为什么您总是只得到第一个参数的原因。
集排序演示:
>>> sorted([{5,6,7,8,9}, {1,2,3}, {1,2}, {1}, {1,2,3,4}])
[{8, 9, 5, 6, 7}, {1}, {1, 2}, {1, 2, 3}, {1, 2, 3, 4}]
在这里,{5,6,7,8,9}
既不是其他子集的子集,也不是其任何子集的超集,因此它被认为是同样大的,并且由于它位于开头并且sort函数是稳定的,因此它保持在原处。但是,其他四个排序很好,因为{1}
是{1,2}
的子集,依此类推。
但是,由于集合之间没有总排序,因此对它们进行排序在某种程度上是不可预测的。例如,这里{5,6,7,8,9}
确实移到了另一个位置:
>>> sorted([{1,2,3}, {1,2}, {5,6,7,8,9}, {1}, {1,2,3,4}])
[{1}, {1, 2}, {1, 2, 3}, {8, 9, 5, 6, 7}, {1, 2, 3, 4}]
如果要以其他方式(例如按大小)对集合进行排序,则只需使用适当的key
即可:
>>> sorted([{1,2,3}, {1,2}, {5,6,7,8,9}, {1}, {1,2,3,4}], key=len)
[{1}, {1, 2}, {1, 2, 3}, {1, 2, 3, 4}, {8, 9, 5, 6, 7}]
>>> max([{1,2,3}, {1,2}, {5,6,7,8,9}, {1}, {1,2,3,4}], key=len)
{8, 9, 5, 6, 7}