속성

2009-05-16 2 views
0
내가 파이썬에서 개체의 목록을 정렬하려고

에 의해 개체의 목록을 정렬 그러나이 코드는 작동하지 않습니다속성

import datetime 

class Day: 
    def __init__(self, date, text): 
     self.date = date 
     self.text = text 

    def __cmp__(self, other): 
     return cmp(self.date, other.date) 

mylist = [Day(datetime.date(2009, 01, 02), "Jan 2"), Day(datetime.date(2009, 01, 01), "Jan 1")] 
print mylist 
print mylist.sort() 

이의 출력은 다음과 같습니다

[<__main__.Day instance at 0x519e0>, <__main__.Day instance at 0x51a08>] 
None 

수 누군가 이걸 풀어주는 좋은 방법을 보여줘? sort() 함수가 None을 반환하는 이유는 무엇입니까?

+0

이 질문의 사본은 다음과 같습니다. http://stackoverflow.com/questions/403421/how-to-sort-a-list-of-objects-in-python-based-on-an-attribute-of- the-objects 명성을 얻은 누군가가 이것을 표기 해주십시오. – galarant

답변

5

mylist.sort()는 아무 것도 반환하지 않고 목록을 정렬합니다. 정확한 결과를 보려면

mylist.sort() 
print mylist 

으로 변경하십시오. 정렬 또는 큰 목록을 반전 할 때

는 공간의 경제 장소에서 목록을 수정() 메소드 http://docs.python.org/library/stdtypes.html#mutable-sequence-types 참고 7.

정렬()를 참조 및 역방향. 이 부작용으로 작동한다는 것을 상기시키기 위해 은 정렬되거나 역순으로 된 목록을 반환하지 않습니다.

+0

-1 : 설명서의 견적이 없습니다. –

+0

아, 어리석은 나. 고마워. – gustavlarson

2

반복 가능한 모든 정렬 된 복사본을 반환하는 함수는 sorted을 참조하십시오.

+0

IOW,'print sorted (mylist) ' –

+0

'정렬 '은 원래 목록을 수정하지 않습니다. 때로 원래 목록을 수정하고 싶을 때가 있습니다. – Rory

+0

알아. 그것이 "정렬 된 사본"이 아니라 "정렬 된 목록에 대한 참조"를 반환하는 이유입니다. –

관련 문제