0
맞춤 주문을 사용하여 목록을 정렬하고 싶습니다. 키로 변환하는 데 문제가 있습니다 (Python 3에서는 더 이상 sort(L,cmp= ..)
).맞춤 주문으로 목록 정렬
주문 간격은 I_k=[a_k,b_k]
입니다. 순서는 다음과 같습니다.
I_k>I_l (if a_k>a_l) OR (if a_k=a_l and b_k<=b_l)
맞춤 주문을 사용하여 목록을 정렬하고 싶습니다. 키로 변환하는 데 문제가 있습니다 (Python 3에서는 더 이상 sort(L,cmp= ..)
).맞춤 주문으로 목록 정렬
주문 간격은 I_k=[a_k,b_k]
입니다. 순서는 다음과 같습니다.
I_k>I_l (if a_k>a_l) OR (if a_k=a_l and b_k<=b_l)
가장 좋은 방법은 비교 함수보다 작은 간격 클래스를 만드는 것입니다.
class Interval(list):
__gt__ = __ge__ = __le__ = NotImplemented
def __init__(self, l):
self.extend(l)
def __lt__(self, other):
print('help')
a_l, b_l = self
a_k, b_k = other
return a_k>a_l or (a_k==a_l and b_k<=b_l)
L = [[0,1], [2,3], [0,2]]
L = sorted(map(Interval, L))
print(L) # [[0, 2], [0, 1], [2, 3]]