kjp0411 님의 블로그

sorted() vs sort() 차이 정리 – 언제 어떤 걸 써야 할까? 본문

Coding Test/Python

sorted() vs sort() 차이 정리 – 언제 어떤 걸 써야 할까?

kjp0411 2025. 6. 23. 13:33

코딩 테스트에서 정렬은 자주 등장합니다.
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는 둘 다 동일하게 사용 가능
  • 코테에서는 상황에 맞춰 선택적으로 사용하는 연습이 중요