Python 정렬 메서드 비교: sort와 sorted
Python에서는 리스트를 정렬할 때 두 가지 방법을 제공한다.
list.sort() 메서드와 sorted() 함수.
둘 다 리스트를 정렬하는 데 사용되지만, 동작 방식과 반환값에서 차이가 있습니다.
1. list.sort(): 리스트 객체의 메서드
- 정렬 대상: 리스트 객체만 사용 가능.
- 작동 방식: 원본 리스트를 직접 정렬(in-place).
- 반환값: None (정렬된 리스트를 반환하지 않음).
- 장점: 메모리 효율적(원본 리스트를 수정).
- 사용 예시:
fruits = ["banana", "apple", "cherry"]
fruits.sort() # 원본 리스트 정렬
print(fruits) # 출력: ['apple', 'banana', 'cherry']
"""
만약
sorted_fruits = fruits.sort() 와 같이 코드를 작성한다면
None을 반환한다.
"""
2. sorted(): 내장 함수
- 정렬 대상: 리스트뿐 아니라 모든 반복 가능한(iterable) 객체 사용 가능.
- 작동 방식: 정렬된 새로운 리스트를 반환(원본 데이터 변경 없음).
- 반환값: 정렬된 새로운 리스트.
- 장점: 원본 데이터는 그대로 유지되고, 새롭게 정렬된 데이터를 활용 가능.
- 사용 예시:
fruits = ["banana", "apple", "cherry"]
sorted_fruits = sorted(fruits) # 새로운 리스트 반환
print(sorted_fruits) # 출력: ['apple', 'banana', 'cherry']
print(fruits) # 원본은 그대로: ['banana', 'apple', 'cherry']
sort와 sorted의 차이점 요약
특징 | list.sort() | sorted() |
적용 대상 | 리스트만 | 모든 반복 가능한 객체 |
원본 변경 여부 | 원본 리스트 변경 (in-place) | 원본 데이터 유지 |
반환값 | None | 정렬된 새로운 리스트 |
메모리 효율성 | 더 효율적 | 추가 메모리 사용 |
사용 편의성 | 리스트를 직접 정렬할 때 적합 | 정렬된 결과를 따로 저장할 때 적합 |
3. 정렬 기준 추가: key, reverse, lambda
두 방법 모두 정렬 기준을 설정하는 **key**와 정렬 방향을 설정하는 reverse 옵션을 지원합니다.
key 옵션
- 정렬 기준을 설정하는 함수.
- 예: 문자열 길이로 정렬하기.
fruits = ["banana", "apple", "cherry"]
fruits.sort(key=len) # sort 사용
print(fruits) # 출력: ['apple', 'cherry', 'banana']
fruits = ["banana", "apple", "cherry"]
sorted_fruits = sorted(fruits, key=len) # sorted 사용
print(sorted_fruits) # 출력: ['apple', 'cherry', 'banana']
reverse 옵션
- 정렬 방향을 설정 (True로 설정하면 내림차순).
numbers = [3, 1, 4, 1, 5]
numbers.sort(reverse=True) # sort 사용
print(numbers) # 출력: [5, 4, 3, 1, 1]
numbers = [3, 1, 4, 1, 5]
sorted_numbers = sorted(numbers, reverse=True) # sorted 사용
print(sorted_numbers) # 출력: [5, 4, 3, 1, 1]
lambda 옵션
numbers = [(-1, 3), (4, 2), (1, 7), (3, 1)]
# 첫 번째 요소로 정렬
sorted_by_first = sorted(numbers, key=lambda x: x[0])
print("첫 번째 요소 기준:", sorted_by_first)
# [(-1, 3), (1, 7), (3, 1), (4, 2)]
# 두 번째 요소로 정렬
sorted_by_second = sorted(numbers, key=lambda x: x[1])
print("두 번째 요소 기준:", sorted_by_second)
# [(3, 1), (4, 2), (-1, 3), (1, 7)]
4. 언제 sort와 sorted를 사용할까?
- sort:
- 리스트 원본을 정렬해도 괜찮을 때.
- 메모리를 절약해야 할 때.
- 정렬된 데이터를 따로 저장할 필요가 없을 때.
- sorted:
- 원본 데이터를 유지해야 할 때.
- 리스트가 아닌 반복 가능한 객체(예: 튜플, 문자열 등)를 정렬할 때.
- 정렬된 결과를 새로운 변수에 저장하거나 여러 번 사용할 때.
'python' 카테고리의 다른 글
python - 탐욕법, 그리디 알고리즘 (Greedy Algorithm) (2) | 2025.01.25 |
---|---|
python - Map(딕셔너리) 자료구조 생성, 특징 및 예제 (0) | 2025.01.24 |
python - Set(집합)의 생성에서 응용 예제까지 (0) | 2025.01.24 |
python - map 함수 기본 문법 및 예제 (0) | 2025.01.24 |
python - 리스트 기본 사용법 (2) | 2025.01.23 |