sort(): 선택적으로 두 개의 키워드를 인수로 받는다.
list.sort() 메서드는 사본을 만들지 않고 리스트 내부를 변경해서 정렬하고, sort() 메서드는 타깃 객체를 변경하고 새로운 리스트를 생성하지 않았음을 알려주기 위해 None을 반환한다
이것은 파이썬 API의 중요한 관례로 객체를 직접 변경하는 함수나 메서드는 객체가 변경되었고 새로운 객체가 생성되지 않았음을 호출자에 알려주기 위해서 None을 반환해야 한다.
sorted():선택적으로 두 개의 키워드를 인수로 받는다
새로운 리스트를 생성해서 반환하고 불변 시퀀스 및 제너레이터를 포함해서 반복 가능한 모든 객체를 인수로 받을 수 있고, 입력 받은 반복 가능한 객체의 자료형과 무관하게 sorted()함수는 언제나 새로 생성한 리스트를 반환한다.
reverse
이 키워드가 참이면 비교 연산을 반대로 해서 내림차순으로 반환하고 기본 값은 False이다.
key
정렬에 사용할 키를 생성하기 위해서 각 항목에 적용할 함수를 인수로 받고, 문자열의 리스트를 정렬할 시 Key=str.lower로 지정하면 대소문자를 구분하지 않고 정렬하고 key=len으로 지정하면 문자열의 길이에 따라서 문자열을 정렬하고 키를 지정하지 않으면 항목 자체를 비교한다.
»> fruits = ['grape', 'raspberry', 'apple', 'banana')
»> sorted(fruits)
[ ' apple ' , ' banana ' , ' grape ' , ' raspberry ' ] O
»> fruits
[ ' grape ' , ' raspberry ' , ' apple ' , ' banana ' ] f}
»> sorted(fruits, reverse=True)
[ ' raspberry ' , ' grape ' , ' banana ' , ' apple ' ] O
»> sorted(fruits, key=len)
[ ' grape ' , ' apple ' , ' banana ' , ' raspberry ' ] O
»> sorted(fruits, key=len, reverse=True)
[ ' raspberry ' , ' banana ' , ' grape ' , ' apple ' ] 0
»> fruits
[ ' grape ' , ' raspberry ' , ' apple ' , ' banana ' ] 0
»> fruits . sort () O
»> fruits
[ ' apple ' , ' banana ' , ' grape ' , ' raspberry ' ]
일단 시퀀스를 정렬한 후에는 아주 효율적으로 검색할 수 있다. 다행히도 파이썬 표준 라이브
러리의 bisect 모듈에서 이미 표준 이진 검색 알고리즘을 제공하고 있다.