Python/파이썬 기초

파이썬 리스트 정렬 함수 sort()와 sorted()의 사용법 정리, 차이 비교

jimmy_AI 2022. 5. 15. 17:07
반응형

Python 정렬 함수 sort vs sorted 예제

파이썬에서 리스트를 단번에 정렬할 수 있는 sort와 sorted 함수에 대하여

각각의 사용법과 두 함수의 차이 비교에 관한 내용을 다루어보도록 하겠습니다.

 

 

sort 함수 사용법

리스트 자료형에 대하여 list.sort() 코드 선언 후 리스트를 다시 출력해보시면

기본적으로 오름차순 정렬이 진행된 모습을 확인할 수 있습니다.

list_a = [8, 1, 5, 3, 9]

list_a.sort() # 이렇게만 실행하면 자동으로 정렬된 값으로 변경

print(list_a) # [1, 3, 5, 8, 9]

만일, 내림차순 정렬을 원한다면 reverse 인자를 True로 설정해주시면 됩니다.

list_a = [8, 1, 5, 3, 9]

list_a.sort(reverse = True) # 내림차순 정렬 방법

print(list_a) # [9, 8, 5, 3, 1]

 

 

sorted 함수 사용법

또 다른 정렬 함수인 sorted는 list_b = sorted(list_a)처럼 재선언 형태로 사용해야 합니다.

원본 자료와 정렬된 자료를 모두 각각 저장할 수 있다는 장점이 있습니다.

sort 함수와 마찬가지로 기본적으로 오름차순 정렬이 수행됩니다.

list_a = [8, 1, 5, 3, 9]

list_b = sorted(list_a) # 재선언 형태로 사용

print(list_a) # [8, 1, 5, 3, 9]
print(list_b) # [1, 3, 5, 8, 9]

sorted에서도 reverse = True 인자 설정 시 내림차순 정렬 기능을 지원하고 있습니다.

list_a = [8, 1, 5, 3, 9]

list_b = sorted(list_a, reverse = True) # 내림차순 정렬 방법

print(list_a) # [8, 1, 5, 3, 9]
print(list_b) # [9, 8, 5, 3, 1]
반응형

sort vs sorted 함수 간의 차이점

1. 사용 형태가 다르다.(재선언 여부)

위에서 다룬 내용대로 sort 함수는 list.sort()처럼만 사용하는 반면,

sorted는 list = sorted(list)처럼 재선언하는 식으로 사용해주셔야 한다는 큰 차이가 있습니다.

 

sort와 sorted의 잘못된 사용 예시는 아래와 같습니다.

list_a = list_a.sort() # sort()의 잘못된 사용 방법

print(list_a) # None
list_a = [8, 1, 5, 3, 9]

sorted(list_a) # sorted()의 잘못된 사용 방법

print(list_a) # [8, 1, 5, 3, 9] : 정렬되지 않은 상황

 

2. 딕셔너리, 튜플, 문자열 등 다른 자료형에 사용 가능 여부가 다르다.

sort 함수는 딕셔너리, 튜플, 문자열 등 자료형에는 사용이 불가합니다.

반면, sorted 함수에서는 해당 자료형에도 적용이 가능합니다.

 

sorted 함수를 사용하면 input 자료형에 상관 없이 각 원소들이 정렬된 리스트가 반환됩니다.

(딕셔너리의 경우 key에 대한 정렬이 수행됩니다.)

 

sort와 sorted를 딕셔너리, 튜플, 문자열에 적용 시도한 예시 코드는 아래와 같습니다.

# sort 함수 적용 시도 : 오류 발생
dict_a = {'a' : 2, 'b' : 1, 'c' : 0}
dict_a.sort() # AttributeError: 'dict' object has no attribute 'sort'

tuple_a = (8, 1, 5, 3, 9)
tuple_a.sort() # AttributeError: 'tuple' object has no attribute 'sort'

str_a = "adcb"
str_a.sort() # AttributeError: 'str' object has no attribute 'sort'
# sorted 함수 적용 시도 : 정렬된 리스트로 반환
dict_a = {'a' : 2, 'b' : 1, 'c' : 0}
result_d = sorted(dict_a)
print(result_d) # ['a', 'b', 'c'], 딕셔너리의 key에 대해서 정렬 수행

tuple_a = (8, 1, 5, 3, 9)
result_t = sorted(tuple_a)
print(result_t) # [1, 3, 5, 8, 9]

str_a = "adcb"
result_s = sorted(str_a)
print(result_s) # ['a', 'b', 'c', 'd']