Python按
词典顺序排序元组:
首先比较前两个项目,如果它们不同,则确定比较结果; 如果它们相等,则比较下两个项目,依此类推,直到任一序列用尽。
例如,
In [33]: import heapq
In [34]: A = [(1,100,2)]
In [35]: B = [(2,0,0)]
In [40]: list(heapq.merge(A,B))
Out[40]: [(1, 100, 2), (2, 0, 0)]
In [41]: (1, 100, 2) < (2, 0, 0)
Out[41]: True
因此,并不一定是真的。
a >= x and b >= y and c >= z
可以在包括自定义类实例在内的任何可排序对象集合上使用
heapq
。使用自定义类,您可以安排任何类型的排序规则。例如,
class MyTuple(tuple):
def __lt__(self, other):
return all(a < b for a, b in zip(self, other))
def __eq__(self, other):
return (len(self) == len(other)
and all(a == b for a, b in zip(self, other)))
def __gt__(self, other):
return not (self < other or self == other)
def __le__(self, other):
return self < other or self == other
def __ge__(self, other):
return not self < other
A = [MyTuple((1,100,2))]
B = [MyTuple((2,0,0))]
print(list(heapq.merge(A,B)))
请注意,虽然这改变了我们对于
MyTuple
中
<
的概念,但是由
heapq.merge
返回的结果不能保证满足。
a <= x and b <= y and c <= z
为了实现这一点,我们首先需要从
A
和
B
中删除所有无序的项目。