Python에서 목록을 정렬하는 방법(오름차순 및 내림차순)
sort() 메서드와 sorted() 함수를 사용하여 Python에서 목록을 정렬하는 방법을 알아보세요. 사용자 정의 키 정렬 및 역순 예시를 살펴보세요.
개요
데이터 정렬은 연령별로 사용자 프로필을 정렬하거나, 가격별로 제품을 나열하거나, 검색 결과를 구성하는 등 프로그래밍에서 가장 일반적인 작업 중 하나입니다. Python은 목록을 정렬하는 두 가지 내장된 고도로 최적화된 방법, 즉 `list.sort()` 메서드와 `sorted()` 함수를 제공합니다. 둘 다 O(N log N) 시간 복잡도로 실행되는 Timsort라는 매우 효율적인 정렬 알고리즘을 사용합니다.
둘 사이의 주요 차이점은 가변성입니다. `list.sort()` 메서드는 목록을 제자리에서 정렬합니다. 즉, 원래 목록을 직접 수정하고 `None`을 반환합니다. 반면 `sorted()` 함수는 원래 목록을 변경하지 않고 그대로 두고 완전히 새로운 정렬 목록을 반환합니다. 이러한 구별은 매우 중요합니다. 메모리를 절약하고 원래 순서가 필요하지 않을 때 `sort()`를 사용하고, 원래 목록을 그대로 유지해야 하거나 튜플이나 사전과 같은 목록이 아닌 반복 가능 항목을 정렬할 때 `sorted()`를 사용하세요.
두 정렬 방법 모두 `reverse`와 `key`라는 두 가지 선택적 키워드 인수를 허용합니다. `reverse` 인수는 부울 값입니다. 'True'로 설정하면 목록이 내림차순(역순)으로 정렬됩니다. `key` 인수는 비교 전에 각 요소에 적용되는 함수를 허용합니다. 이를 통해 길이를 기준으로 문자열 목록을 정렬하거나 특정 키를 기준으로 사전 목록을 정렬하는 등 복잡한 정렬 논리를 사용할 수 있습니다.
코드 및 실행 출력
이 코드는 sort() 및 sorted()를 모두 사용하여 숫자 목록을 정렬하고, 역방향으로 정렬하고, 문자열 길이를 기준으로 사용자 정의 키를 정렬하는 방법을 보여줍니다.
numbers = [42, 7, 12, 89, 23]
# 1. Using sorted() (returns new list)
new_sorted = sorted(numbers)
print("Original:", numbers)
print("Sorted new list:", new_sorted)
# 2. Using sort() (in-place modification)
numbers.sort()
print("Modified original list:", numbers)
# 3. Sorting in reverse (descending)
numbers.sort(reverse=True)
print("Reverse sorted list:", numbers)
# 4. Custom sorting (by string length)
words = ["banana", "pear", "apple", "fig"]
words.sort(key=len)
print("Sorted by length:", words)Original: [42, 7, 12, 89, 23]
Sorted new list: [7, 12, 23, 42, 89]
Modified original list: [7, 12, 23, 42, 89]
Reverse sorted list: [89, 42, 23, 12, 7]
Sorted by length: ['fig', 'pear', 'apple', 'banana']단계별 구현
- 원래 데이터를 변경하지 않고 목록의 복사본을 정렬하려면 sorted() 함수를 사용하십시오.
- 목록 객체에서 직접 .sort() 메서드를 사용하여 해당 위치에서 수정하고 메모리를 절약하세요.
- 항목을 내림차순으로 정렬하려면 reverse=True를 매개변수로 전달합니다.
- 사용자 정의 속성(예: 길이 또는 중첩 값)을 기준으로 요소를 정렬하려면 key=lambda x: ...를 사용하세요.
자주 묻는 질문
list.sort()와 sorted()의 차이점은 무엇입니까?
list.sort()는 목록을 그 자리에서 수정하고 None을 반환하는 반면, sorted()는 원래 목록을 변경하지 않고 그대로 두고 새로운 정렬된 목록을 반환합니다.
키를 기준으로 사전 목록을 어떻게 정렬합니까?
람다 함수 또는 Operator.itemgetter와 함께 key 매개변수를 사용하세요. 예: list.sort(key=lambda 항목: 항목["age"]).
관련 주제
len() 함수를 사용하여 Python에서 목록의 길이를 찾는 방법을 알아보세요. O(1) 시간 복잡도와 확인 횟수를 이해합니다.
Python의 목록에서 중복 항목을 제거하는 방법순서를 유지하거나 무시하면서 Python의 목록에서 중복 항목을 제거하는 방법을 알아보세요. 집합 변환, dict 키 및 루프 방법을 비교합니다.
Python에서 두 목록을 병합하는 방법(연결 및 확장)Python에서 두 목록을 병합하고 결합하는 가장 좋은 방법을 알아보세요. 플러스 연산자, 확장 메소드, 목록 풀기 및 체인 옵션을 비교하십시오.
권장 Python 리소스
관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.
Python 변수 및 데이터 유형 설명
Python 변수와 핵심 데이터 유형(문자열, 정수, 부동 소수점, 부울)을 이해합니다. Python의 메모리 할당에 대한 완전한 초보자 가이드입니다.
Python 목록 메서드 치트 시트
Python 목록 작업에 대한 빠른 참조 가이드입니다. 요소 추가, 삽입, 제거, 정렬 및 분할을 마스터합니다.
Python 대 JavaScript: 어떤 프로그래밍 언어가 가장 좋나요?
Python과 JavaScript를 포괄적으로 비교합니다. 구문 차이점, 성능, 사용 사례(백엔드와 프런트엔드) 및 코딩 예제를 살펴보세요.