kjp0411 님의 블로그
sorted() vs sort() 차이 정리 – 언제 어떤 걸 써야 할까? 본문
코딩 테스트에서 정렬은 자주 등장합니다.
Python에는 sorted()와 sort() 두 가지 정렬 방법이 있는데,
둘 다 비슷해 보이지만 엄연히 다릅니다.
이 글에서는 그 차이를 명확히 정리해볼게요.
✅ 기본 개념 비교
항목sorted()list.sort()
| 형태 | 내장 함수 | 리스트 메서드 |
| 적용 대상 | 모든 iterable (list, tuple, set, str, 등) | 리스트(list)만 사용 가능 |
| 정렬 결과 | 정렬된 새 리스트 반환 | 원본 리스트를 직접 정렬 (in-place) |
| 원본 변경 여부 | ❌ 변경 안 함 | ✅ 변경함 |
| 사용법 | sorted(iterable, key=..., reverse=...) | list.sort(key=..., reverse=...) |
✅ 코드 예시
arr = [3, 1, 2]
# sorted() 사용
new_arr = sorted(arr)
print(arr) # [3, 1, 2] 👉 원본 그대로
print(new_arr) # [1, 2, 3] 👉 새로운 정렬 리스트
# sort() 사용
arr.sort()
print(arr) # [1, 2, 3] 👉 원본이 변경됨
✅ key와 reverse 사용법 (둘 다 동일)
arr = [(1, 3), (2, 2), (3, 1)]
# key로 정렬 기준 설정
sorted(arr, key=lambda x: x[1]) # [(3, 1), (2, 2), (1, 3)]
arr.sort(key=lambda x: x[1]) # 동일 결과, 단 arr 자체가 바뀜
# reverse로 내림차순 정렬
sorted(arr, reverse=True)
arr.sort(reverse=True)
💡 언제 어떤 걸 써야 할까?
상황추천 함수
| 원본을 보존하면서 정렬 결과만 따로 사용하고 싶을 때 | sorted() |
| 속도(성능)가 중요하고 원본을 직접 바꿔도 될 때 | sort() |
※ sort()가 약간 더 빠름 (in-place 정렬이라 메모리 덜 사용)
✅ 기타 정렬 예시
# 문자열 정렬
sorted("hello") # ['e', 'h', 'l', 'l', 'o']
# 딕셔너리 value 기준 정렬
d = {'a': 3, 'b': 1, 'c': 2}
sorted(d.items(), key=lambda x: x[1]) # [('b', 1), ('c', 2), ('a', 3)]
✍ 회고 및 요약
- sorted()는 모든 iterable에 사용 가능하며 원본을 보존
- sort()는 리스트 전용, 원본을 직접 정렬 (빠름)
- key, lambda, reverse는 둘 다 동일하게 사용 가능
- 코테에서는 상황에 맞춰 선택적으로 사용하는 연습이 중요
'Coding Test > Python' 카테고리의 다른 글
| 코딩 테스트 준비하기 (1) | 2025.09.08 |
|---|---|
| 프로그래머스 문제 : 신규 아이디 추천 (0) | 2025.06.30 |
| Python 내장 함수 정리 – 코테에 자주 쓰이는 것만 골라보자! (0) | 2025.06.23 |
| 리스트 컴프리헨션(List Comprehension) (0) | 2025.06.22 |
| 프로그래머스 문제: 자릿수 더하기 (0) | 2025.06.16 |
