728x90
반응형
sort와 sorted는 Python에서 리스트와 같은 데이터 구조를 정렬할 때 사용되지만, 작동 방식과 사용 용도가 다릅니다.
1. sort
- 리스트 객체의 메서드로, 원본 리스트를 제자리에서(in-place) 정렬합니다.
- 정렬된 결과를 반환하지 않고, 원본 리스트 자체를 변경합니다.
사용법
list.sort(key=None, reverse=False)
매개변수
- key: 정렬 기준으로 사용할 함수를 지정. (기본값: None)
- reverse: 정렬 순서를 반대로 설정. True이면 내림차순, 기본값은 False로 오름차순.
예제
# 원본 리스트 정렬
numbers = [3, 1, 4, 1, 5, 9]
numbers.sort()
print(numbers) # [1, 1, 3, 4, 5, 9]
# 내림차순 정렬
numbers.sort(reverse=True)
print(numbers) # [9, 5, 4, 3, 1, 1]
특징
- 원본 데이터가 변경됩니다.
- 반환값은 None입니다. 정렬 결과는 원본 리스트에서 확인해야 합니다.
2. sorted
- 내장 함수로, 원본 데이터를 변경하지 않고 새로운 정렬된 리스트를 반환합니다.
- 모든 이터러블(iterable) 객체에서 사용할 수 있습니다 (리스트, 튜플, 딕셔너리, 문자열 등).
사용법
sorted(iterable, key=None, reverse=False)
매개변수
- iterable: 정렬 대상인 반복 가능한 객체.
- key: 정렬 기준으로 사용할 함수를 지정. (기본값: None)
- reverse: 정렬 순서를 반대로 설정. True이면 내림차순, 기본값은 False로 오름차순.
예제
# 리스트 정렬 (새로운 리스트 반환)
numbers = [3, 1, 4, 1, 5, 9]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # [1, 1, 3, 4, 5, 9]
print(numbers) # 원본 리스트는 변경되지 않음: [3, 1, 4, 1, 5, 9]
# 문자열 정렬
string = "python"
sorted_string = sorted(string)
print(sorted_string) # ['h', 'n', 'o', 'p', 't', 'y']
# 튜플 정렬
tuple_data = (3, 1, 4, 1, 5, 9)
sorted_tuple = sorted(tuple_data)
print(sorted_tuple) # [1, 1, 3, 4, 5, 9]
특징
- 원본 데이터는 변경되지 않습니다.
- 반환값은 정렬된 새로운 객체입니다.
3. 주요 차이점
특징 sort sorted
| 적용 대상 | 리스트 메서드 (리스트에서만 사용 가능) | 모든 이터러블(iterable) 객체 |
| 반환값 | None (원본 리스트를 정렬) | 정렬된 새로운 리스트 |
| 원본 데이터 변경 여부 | 변경됨 (in-place 정렬) | 변경되지 않음 (원본 데이터는 유지됨) |
| 사용 방식 | list.sort() | sorted(iterable) |
4. 언제 사용해야 할까?
- sort:
- 리스트를 제자리에서 정렬해야 할 때 사용.
- 메모리 사용을 최소화하고, 원본 데이터를 정렬해야 할 때 적합.
- sorted:
- 원본 데이터를 유지해야 하거나, 이터러블 객체를 정렬해야 할 때 사용.
- 정렬된 결과를 새로운 객체로 사용하려면 적합.
5. 예제 비교
sort
numbers = [3, 1, 4, 1, 5, 9]
numbers.sort() # 원본 리스트 자체가 정렬됨
print(numbers) # [1, 1, 3, 4, 5, 9]
sorted
numbers = [3, 1, 4, 1, 5, 9]
new_numbers = sorted(numbers) # 새로운 리스트 반환
print(new_numbers) # [1, 1, 3, 4, 5, 9]
print(numbers) # 원본 리스트는 변경되지 않음: [3, 1, 4, 1, 5, 9]
6. 정렬 기준 (key 사용)
두 함수 모두 key 매개변수를 사용해 정렬 기준을 커스터마이징할 수 있습니다.
예제
# 절대값 기준으로 정렬
numbers = [-3, 1, -4, 1, -5, 9]
print(sorted(numbers, key=abs)) # [1, 1, -3, -4, -5, 9]
# 문자열 길이 기준으로 정렬
words = ["apple", "banana", "kiwi"]
print(sorted(words, key=len)) # ['kiwi', 'apple', 'banana']
7. 정리
- sort는 리스트에서만 사용 가능하며, 원본 데이터를 직접 변경합니다.
- sorted는 모든 이터러블 객체에서 사용할 수 있으며, 원본 데이터를 유지하고 새로운 객체를 반환합니다.
- key와 reverse 매개변수를 사용하여 정렬 기준과 순서를 커스터마이징할 수 있습니다.
'Category > Python' 카테고리의 다른 글
| Python의 collections 모듈 사용하기 (0) | 2024.11.20 |
|---|---|
| Python에서 heapq로 최대힙, 최소힙 구현하기 (0) | 2024.11.18 |
| Python의 itertools 모듈에서 제공하는 주요 함수 정리 (0) | 2024.11.18 |
| Python에서 __init__과 self의 역할 (0) | 2024.11.17 |
| zip 함수란? (0) | 2024.11.16 |