[Python] sorted, sort 함수
2022. 12. 11. 23:27
리스트를 정렬시켜주는 sorted와 sort 함수에 대해 알아보자.
sorted - 정렬 후 새로운 객체 반환
li_eng = ['car', 'banana', 'dog', 'animal']
li_kor = ['다람쥐', '가방', '나무']
li_num = [3, 1, 2]
print(sorted(li_eng))
print(sorted(li_kor))
print(sorted(li_num))
알파벳(a, b, c, ...), 한글(ㄱ, ㄴ, ㄷ, ...), 숫자(1, 2, 3, ...)를 기준으로 정렬되었다.
sorted()의 매개변수로 iterable(반복 가능한 객체)를 넘겨주었으며, 이 외에 key와 reverse 등의 매개변수를 넣을 수 있다.
reverse
reverse를 사용해 보자.
print(sorted(li_eng, reverse=True))
print(sorted(li_kor, reverse=True))
print(sorted(li_num, reverse=True))
reverse의 default 값은 False이다. True의 결과값은 앞선 결과의 반대로 정렬된다.
key
li_kor = ['날다람쥐', '까마귀', '참새']
print(sorted(li_kor, key=lambda x:x[-1]))
print(sorted(li_kor, key=len))
key를 통해 len을 기준으로, lambda함수에서 정의한 기준 등으로 정렬의 기준을 정할 수 있다.
lambda x:x[-1]의 결과로 마지막 글자를 기준으로 정렬한 값이 출력된다.
정렬 후 새로운 객체 반환
print(id(li_kor))
print(id(sorted(li_kor, key=len)))
sorted 함수는 정렬 후 새로운 객체를 반환한다.
정렬 전과 후의 id값을 확인해보면 다르다.
sort - 원본 객체 직접 변경
li_num = [53, 271, 2]
print(li_num)
print(li_num.sort())
print(li_num)
원본 객체 직접 변경
sort함수는 sorted함수와 다르게 원본 객체를 직접 변경한다.
따라서 리스트.sort()의 형식으로 사용한다.
여기서 알아둬야 할 점은 sort()의 반환값은 None이다.
id값으로 정렬 전 리스트와 정렬 후 리스트를 출력해보면 직접 변경되었음을 확인할 수 있다.
print(id(li_num))
print(li_num.sort())
print(id(li_num))
sort함수는 sorted와 마찬가지로 key와 reverse 매개변수를 넣어 사용할 수 있다.
'Python > 파이썬 중급' 카테고리의 다른 글
[Python] 이터레이터(iterator), 제너레이터(generator) (0) | 2022.12.14 |
---|---|
[Python] setdefault 함수 (0) | 2022.12.11 |
[Python] mutable(가변 객체), immutable(불변 객체) (0) | 2022.12.08 |
[Python] map, filter 함수 (0) | 2022.12.07 |
[Python] MappingProxyType (0) | 2022.12.07 |