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']
'Python > 파이썬 기초' 카테고리의 다른 글
파이썬 lambda 이용 함수 선언 예제 : 인자/return 값 여러개, 기본 값 지정, if문 활용 등 (0) | 2022.05.16 |
---|---|
파이썬 del 명령어의 기능, 자료형별 사용 예제 정리 (0) | 2022.05.12 |
파이썬 len 함수 총정리 : 자료형별 길이 정의, 시간 복잡도, 클래스 내 __len__ 구현 (2) | 2022.05.05 |