Python에서 목록을 정렬하는 방법(오름차순 및 내림차순)

sort() 메서드와 sorted() 함수를 사용하여 Python에서 목록을 정렬하는 방법을 알아보세요. 사용자 정의 키 정렬 및 역순 예시를 살펴보세요.

Editor에서 이 솔루션을 사용해 보세요.

개요

데이터 정렬은 연령별로 사용자 프로필을 정렬하거나, 가격별로 제품을 나열하거나, 검색 결과를 구성하는 등 프로그래밍에서 가장 일반적인 작업 중 하나입니다. 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"]).

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.