[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 매개변수를 넣어 사용할 수 있다.