1 .sort() 와 sorted()의 차이
| 항목 |
.sort() |
sorted() |
| 종류 |
리스트 전용 메서드 |
내장 함수 |
| 원본 변경 |
✅ 원본 리스트를 직접 정렬 (in-place) |
❌ 원본은 그대로 두고 새 리스트 생성 |
| 반환값 |
None (아무것도 반환하지 않음) |
정렬된 새 리스트 반환 |
| 적용 대상 |
리스트(list)만 가능 |
리스트, 문자열, 튜플, 딕셔너리 등 모든 반복 가능한 객체 가능 |
| 가독성 |
한 번만 정렬할 때 사용 |
함수 체이닝 등 다양한 용도에 적합 |
2. 예제 비교로 쉽게 이해하기
2-1 .sort() 예제
numbers = [3, 1, 4, 2]
numbers.sort() # 원본이 정렬됨
print(numbers) # ✅ 출력: [1, 2, 3, 4]
result = numbers.sort()
print(result) # ❌ 출력: None (리턴값이 없음)
- .sort()는 리스트 자체를 바꾸고, 아무것도 반환하지 않음
- 그래서 return numbers.sort() 또는 print(numbers.sort())는 항상 None
2-2. sorted() 예제
numbers = [3, 1, 4, 2]
new_numbers = sorted(numbers)
print(numbers) # ✅ 출력: [3, 1, 4, 2] (원본 유지)
print(new_numbers) # ✅ 출력: [1, 2, 3, 4] (새 리스트 생성)
- sorted()는 원본을 그대로 두고 정렬된 새로운 리스트를 반환
3. 언제 어떤 걸 써야 할까?
| 상황추천 |
방법 |
이유 |
| 원본 리스트를 정렬해도 괜찮다 |
.sort() |
메모리 아끼고 빠름 |
| 원본 리스트는 그대로 두고, 정렬된 값이 필요하다 |
sorted() |
데이터 보존 가능 |
| 리스트가 아닌 다른 타입 (문자열, 튜플 등)을 정렬하고 싶다 |
sorted() |
범용성 있음 |
| return 문에서 정렬 결과를 반환하고 싶다 |
sorted() |
.sort()는 반환값 없음 |
4. 보너스: key와 reverse 옵션은 공통
words = ["banana", "apple", "cherry"]
# 길이순으로 정렬
print(sorted(words, key=len)) # ['apple', 'banana', 'cherry']
# 알파벳 역순 정렬
words.sort(reverse=True)
print(words) # ['cherry', 'banana', 'apple']
- key=: 어떤 기준으로 정렬할지 지정
- reverse=True: 내림차순 정렬