[파이썬] `sort` 및 `sorted`를 이용한 파이썬 리스트 정렬 방법

다수의 어플리케이션에서 리스트를 정렬하는 작업은 흔하고 중요하다. 파이썬에서 이 과정은 효율적으로 간소화되어 있다. 이 포스트에서는 파이썬에서 다양한 방법으로 리스트를 정렬하는 방법에 대해 설명한다.

sort 메소드를 이용한 리스트 정렬

인자 없이 sort 메소드 사용하기

sort 메소드는 인자 없이 사용할 때 리스트를 오름차순으로 제자리에서 정렬한다. 즉, 원본 리스트가 변경되고 새로운 리스트는 반환되지 않는다. 이것은 유사한 데이터 유형의 리스트를 신속하고 효율적으로 정렬하는 방법이다.

python
numbers = [4, 2, 9, 1, 5, 6]
numbers.sort() # 리스트 정렬
print(numbers)
[1, 2, 4, 5, 6, 9]

reverse 인자와 함께 sort 메소드 사용하기

reverse 인자와 sort 메소드를 함께 사용하면 리스트를 내림차순으로 정렬할 수 있다. 이것은 정렬 방향을 제어할 수 있으며 리스트 자체에 직접 사용된다.

python
numbers = [4, 2, 9, 1, 5, 6]
numbers.sort(reverse=True) # 리스트 내림차순 정렬
print(numbers)
[9, 6, 5, 4, 2, 1]

sorted 함수를 이용한 리스트 정렬

sorted 함수는 어떤 반복 가능한 요소의 새로 정렬된 리스트를 반환한다.

문자열 리스트 정렬

sorted 함수는 반복 가능한 항목, 예를 들어 문자열 리스트와 같은 것을 정렬할 수 있다. sort 메소드와 달리, 원래 리스트는 변경되지 않고 새로운 정렬된 리스트가 반환된다. 이를 통해 원래 순서를 필요에 따라 유지할 수 있다.

python
words = ["apple", "banana", "cherry"]
sorted_words = sorted(words) # 문자열 정렬
print(sorted_words)
['apple', 'banana', 'cherry']

튜플 리스트 정렬

특정 튜플 내 요소별로 정렬하려는 경우, 튜플 리스트를 정렬하는 것은 특별한 처리가 필요할 수 있다. key 인자와 람다 함수의 결합을 통해 정확한 정렬 동작을 정의할 수 있다.

python
tuples = [(1, 2), (3, 1), (5, 0), (4, 4)]
sorted_tuples = sorted(tuples, key=lambda x: x[1]) # 두 번째 요소를 기준으로 튜플 정렬
print(sorted_tuples)
[(5, 0), (3, 1), (1, 2), (4, 4)]

사전 구성된 리스트 정렬

사전으로 구성된 리스트를 정렬하려면, 사전이 정렬되어야 할 키를 지정해야 한다. 아래는 "age" 키와 연결된 값으로 사전 리스트를 정렬하는 예이다.

python
people = [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}, {"name": "Charlie", "age": 35}]
sorted_people = sorted(people, key=lambda x: x["age"]) # 'age' 값을 키로 사용하여 사람 정렬
print(sorted_people)
[{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]

이 코드는 사람을 대표하는 사전의 리스트를 가져와 연령별로 정렬한다. key 인자와 람다 함수를 사용하면, 각 사전의 "age" 값이 정렬 키로 사용되어야 함을 지정할 수 있다.


파이썬에서 리스트를 정렬하는 것은 sort 메소드와 sorted 함수를 사용하여 달성할 수 있다. 오름차순이든 내림차순이든, 이러한 도구를 사용하면 원하는 결과를 달성하기 위한 간단하고 효율적인 방법을 제공한다.


FAQs

  1. sort 메서드와 sorted 함수 중 어느 것을 사용해야 하나요? sort 메서드는 원본 리스트를 변경하고, sorted 함수는 새로운 정렬된 리스트를 반환한다. 원본 리스트를 변경하지 않으려면 sorted를, 원본 리스트를 직접 변경하려면 sort를 사용하면 된다.
  2. 튜플 리스트를 정렬할 때 특정 튜플 원소를 기준으로 어떻게 정렬하나요? key 인수와 람다 함수를 조합하면 특정 튜플 원소를 기준으로 정렬할 수 있다. 예를 들어, sorted(tuples, key=lambda x: x[1])은 튜플의 두 번째 원소를 기준으로 정렬한다.
  3. 리스트에 다른 데이터 타입이 섞여 있을 때 어떻게 정렬하나요? sort 메서드나 sorted 함수는 동일한 데이터 타입의 요소로 구성된 리스트에서만 작동한다. 다른 데이터 타입이 섞인 리스트를 정렬하려면, 특정 데이터 타입을 기준으로 정렬하거나, 사용자 정의 정렬 함수를 작성해야 할 수 있다.
  4. 내림차순 정렬을 하려면 어떻게 해야 하나요? 내림차순 정렬을 원한다면, sort 메서드나 sorted 함수를 사용할 때 reverse=True 인수를 추가하면 된다. 예를 들어, numbers.sort(reverse=True)은 숫자를 내림차순으로 정렬한다.
  5. 딕셔너리 리스트를 정렬할 때 특정 키를 기준으로 어떻게 정렬하나요? 딕셔너리 리스트를 정렬할 때는 key 인수를 사용하여 정렬할 키를 지정할 수 있다. 예를 들어, sorted(people, key=lambda x: x["age"]) 코드는 "age" 키의 값을 기준으로 딕셔너리 리스트를 정렬한다.
© Copyright 2023 CLONE CODING