728x90
1. sort()와 sorted()의 차이
파이썬에서 반복가능한 객체를 정렬하기 위해서는 sort함수와 sorted함수가 있습니다.
이 두가지 함수는 여러가지 차이점을 가지고 있기 때문에 잘 알고 사용해야합니다.
먼저 sorted 함수는 기존 자료를 정리한 후 새로운 객체로 반환합니다. 따라서 기존 자료는 수정되지 않습니다.
예제를 통해 살펴보겠습니다.
list_b = ["aa","ccc","bb","ddddd","eeee"]
print(list_b) #출력: ['aa', 'ccc', 'bb', 'ddddd', 'eeee']
sorted_b = sorted(list_b) # 새로운 객체 생성
print(sorted_b) #출력: ['aa', 'bb', 'ccc', 'ddddd', 'eeee']
print(list_b) #출력: ['aa', 'ccc', 'bb', 'ddddd', 'eeee'] -> 원본은 수정되지 않음
반면에 sort함수는 새로운 값을 반환하지 않습니다. 대신에 기존 자료를 변경시킵니다.
아래 예제를 통해 확인해보겠습니다.
list_b = ["aa","ccc","bb","ddddd","eeee"]
print(list_b) #출력: ['aa', 'ccc', 'bb', 'ddddd', 'eeee']
print(list_b.sort(),list_b) # 출력: None ['aa', 'bb', 'ccc', 'ddddd', 'eeee'] -> 원본이 직접 변경
sort함수를 호출한 후 기존 자료를 출력해보면 자료가 변경되어있는 것을 확인할 수 있습니다.
따라서 두 함수의 차이를 고려하여 사용해야 합니다.
2. 옵션
정렬함수의 옵션은 reverse, key=len, key=함수 등등이 있습니다.
이 옵션은 sort()함수나 sorted()함수 모두 동일하게 사용할 수 있습니다.
단 len은 길이가 측정가능한 자료형, 즉 반복가능한 자료형에서만 사용할 수 있습니다.
예제)
list_b = ["aa","ccc","bb","ddddd","eeee"]
print(sorted(list_b,reverse=True)) #출력: ['eeee', 'ddddd', 'ccc', 'bb', 'aa'] -> 역순
print(sorted(list_b,key=len)) #출력: ['aa', 'bb', 'ccc', 'eeee', 'ddddd'] -> 글자 길이순으로 출력
print(sorted(list_b,key=lambda x :x[-1])) #출력: ['aa', 'bb', 'ccc', 'eeee', 'ddddd'] -> 마지막 글자의 알파벳 순서대로 출력
print(sorted(list_b,key=lambda x :x[-1],reverse=True)) #출력: ['eeee', 'ddddd', 'ccc', 'bb', 'aa'] -> 위 결과의 역순으로 출력
list_b.sort(reverse=True)
print(list_b) #출력: ['eeee', 'ddddd', 'ccc', 'bb', 'aa']
list_b.sort(key=len)
print(list_b) #출력: ['bb', 'aa', 'ccc', 'eeee', 'ddddd']
list_b.sort(key=lambda x :x[-1])
print(list_b) #출력: ['aa', 'bb', 'ccc', 'ddddd', 'eeee']
list_b.sort(key=lambda x :x[-1], reverse=True)
print(list_b) #출력: ['eeee', 'ddddd', 'ccc', 'bb', 'aa']
'PYTHON Programming > Python' 카테고리의 다른 글
[python] 일급함수(First-class function) (0) | 2024.05.28 |
---|---|
[python] 구글 스프레드 시트 연동 및 관리(gspread) (0) | 2024.05.23 |
[python] namedTuple (0) | 2024.05.23 |
[python] GUI 프로그래밍(tkinter) (0) | 2024.05.22 |
[python] requests (0) | 2024.05.22 |