[Python TIL] list.sort() vs sorted() 완벽 정리

KiwiChipKiwiChip
3 min read

✅ 공통점 먼저 알아보기

둘 다 정렬을 수행한다는 점은 같음:

list.sort()
sorted(list)
  • 정렬 기준을 지정하지 않으면, 기본적으로 오름차순 정렬

  • keyreverse 인자를 사용해서 정렬 기준내림차순 여부 설정 가능


🔎 1. list.sort() — 원본 리스트 자체를 정렬 (제자리 정렬)

✔ 특징

  • 리스트 객체의 메서드

  • 리턴값이 없다 (None 반환)

  • 원본 리스트가 변경됨 (★)

📌 예제

numbers = [5, 2, 9, 1]
result = numbers.sort()

print("정렬 후 numbers:", numbers)  # [1, 2, 5, 9]
print("result:", result)           # None

⚠ 주의

  • 반환값이 None이기 때문에 new_list = list.sort()처럼 쓰면 오류 발생

  • 원본 데이터를 보존해야 할 경우에는 사용하면 안 됨


🔎 2. sorted() — 원본은 유지, 새 리스트 반환

✔ 특징

  • 내장 함수 (리스트뿐 아니라 모든 반복 가능한 객체에 사용 가능)

  • 새로운 정렬된 리스트를 반환

  • 원본은 변경되지 않음 (★)

📌 예제

numbers = [5, 2, 9, 1]
result = sorted(numbers)

print("정렬 후 numbers:", numbers)  # [5, 2, 9, 1] → 원본 그대로
print("result:", result)           # [1, 2, 5, 9] → 정렬된 새 리스트

📍 주요 차이점 정리

항목list.sort()sorted()
사용 대상리스트만 가능모든 반복 가능한 객체 (list, tuple, dict 등)
반환값None (원본 자체 변경)정렬된 새 리스트 반환
원본 유지 여부❌ (변경됨)✅ (변경되지 않음)
함수 타입리스트 메서드내장 함수
메모리메모리 절약새 리스트 생성으로 메모리 추가 사용

✅ 정렬 기준 설정: keyreverse

🔸 key 인자: 정렬 기준을 설정하는 함수

words = ['apple', 'banana', 'kiwi']
sorted_words = sorted(words, key=len)  # 문자열 길이 기준으로 정렬
print(sorted_words)  # ['kiwi', 'apple', 'banana']

🔸 reverse=True: 내림차순 정렬

# sort reverse
numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers)  # [9, 5, 2, 1]

# sorted reverse
nums = [3, 1, 4, 2]
print(sorted(nums, reverse=True))  # [4, 3, 2, 1]

✅ 튜플, 문자열, 딕셔너리에도 사용 가능 (sorted만!)

# 문자열 정렬
print(sorted("dbca"))  # ['a', 'b', 'c', 'd']

# 튜플 정렬
print(sorted((3, 1, 2)))  # [1, 2, 3]

# 딕셔너리 key 정렬
my_dict = {"banana": 3, "apple": 1, "cherry": 2}
print(sorted(my_dict))  # ['apple', 'banana', 'cherry']

💡 sort()는 리스트에만 적용 가능하지만, sorted()는 다양한 자료형에도 사용 가능하다는 것이 큰 장점!


✅ 언제 어떤 걸 써야 할까?

상황추천 함수
원본 데이터를 정렬해서 변경해도 괜찮을 때list.sort()
원본 데이터를 그대로 두고, 정렬된 새 리스트가 필요할 때sorted()
리스트가 아닌 튜플, 문자열, 딕셔너리를 정렬할 때sorted()

🧠 마무리 요약

항목list.sort()sorted()
원본 변경OX
반환값None정렬된 리스트
적용 대상리스트만모든 iterable
사용 예my_list.sort()sorted(my_list)

필요하다면 이 내용을 블로그 카드 뉴스 스타일로 나눠서 시각화하거나
"정렬을 안전하게 쓰는 팁", "실수하기 쉬운 코드 예시" 같이 확장해서 콘텐츠로 만들 수도 있어!
원한다면 알려줘 😊

0
Subscribe to my newsletter

Read articles from KiwiChip directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

KiwiChip
KiwiChip

I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).