1. sort()
list.sort()를 하게 되면, list 원본 값이 수정되어 정렬된다.
예를 들어보면,
이런 식이다.
list2의 값이 None으로 나타나는 것을 보니 sort()함수는 정렬된 값을 따로 반환하지 않고, 원본을 in-place 식으로 변경하는 것 같다.
프로그래머스에서 사용된 코드를 예로 들어보면
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
if participant[i] != completion[i]:
return participant[i]
return participant[len(participant)-1]
이런 식으로 사용할 수 있다.
2. sorted()
내장함수로서, 원본객체는 그대로 두고 정렬된 객체를 반환한다. 예를 들어보면,
이런 식이다.
원본은 그대로이고, 정렬된 객체가 list2 에 저장되었다.
또한 sort()가 리스트만을 위한 메소드라면,
sorted()는 어떤 iterable 객체라도 받을 수 있다.
예를 들면,
sorted({3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A'})
결과: [1, 2, 3, 4, 5]
이런 식으로 딕셔너리를 넣어 정렬할 수 있다.
하지만 이 코드는 결과값을 key값만 포함한다.
sorted({3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A'}.items())
결과: [(1, 'A'), (2, 'B'), (3, 'D'), (4, 'E'), (5, 'B')]
이렇게 뒤에 dict.items()를 활용하여 나타낼 수 있다.
dict = {3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A'}
sorted(dict.items(), key = lambda x: x[1])
결과: [(1, 'A'), (2, 'B'), (5, 'B'), (3, 'D'), (4, 'E')]
단, key에는 lambda함수가 인자로 전달된다.
결과를 보면 value 값을 기준으로 정렬이 된 것을 볼 수 있다.
위의 lambda 함수에서 x[1]이 value 값이고, x[0]은 key값이다.