본문 바로가기
실버를 위한 코딩/파이썬

[파이썬] `sorted()` 함수와 `sort()` 메서드

by forSilver 2024. 6. 28.
반응형

sorted() 함수와 sort() 메서드

sorted() 함수와 sort() 메서드는 파이썬에서 리스트를 정렬하는 두 가지 방법입니다. 둘 다 리스트를 정렬하는 데 사용되지만, 몇 가지 차이점이 있습니다. 이를 각각의 특징과 예제를 통해 설명하겠습니다.

sorted() 함수

  • 특징:
    • 새로운 리스트 반환: sorted() 함수는 정렬된 새로운 리스트를 반환합니다. 원래의 리스트는 변경되지 않습니다.
    • 임의의 반복 가능한 객체 정렬 가능: sorted() 함수는 리스트뿐만 아니라 튜플, 문자열, 딕셔너리 등 반복 가능한(iterable) 객체를 정렬할 수 있습니다.
    • 다양한 매개변수 지원:
      • key: 정렬 기준을 지정하는 함수
      • reverse: 정렬 순서를 역순으로 설정 (기본값은 False)
  • 예제:
# 리스트 정렬
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 출력: [1, 1, 2, 3, 4, 5, 5, 6, 9]
print(numbers)         # 출력: [3, 1, 4, 1, 5, 9, 2, 6, 5] (원래 리스트는 변경되지 않음)

# 문자열 정렬
string = "hello"
sorted_string = sorted(string)
print(sorted_string)  # 출력: ['e', 'h', 'l', 'l', 'o']

# 딕셔너리 키 정렬
dictionary = {'b': 1, 'a': 2, 'c': 3}
sorted_keys = sorted(dictionary)
print(sorted_keys)  # 출력: ['a', 'b', 'c']

sorted() 함수의 사례 코딩

 

sort() 메서드

  • 특징:
    • 원래 리스트를 직접 변경: sort() 메서드는 리스트 객체의 메서드로, 호출 시 원래 리스트를 직접 정렬합니다. 반환값은 None입니다.
    • 리스트 전용: sort() 메서드는 리스트에만 사용할 수 있습니다.
    • 다양한 매개변수 지원:
      • key: 정렬 기준을 지정하는 함수
      • reverse: 정렬 순서를 역순으로 설정 (기본값은 False)
  • 예제:
# 리스트 정렬
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
numbers.sort()
print(numbers)  # 출력: [1, 1, 2, 3, 4, 5, 5, 6, 9] (원래 리스트가 변경됨)

# key 매개변수를 사용한 정렬
people = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 30}]
people.sort(key=lambda person: person['age'])
print(people)  # 출력: [{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 25}, {'name': 'Charlie', 'age': 30}]

sort() 메서드 코딩 사례

주요 차이점 요약

  1. 반환값:
    • sorted(): 정렬된 새로운 리스트 반환.
    • sort(): 반환값이 없으며, 원래 리스트를 직접 정렬.
  2. 사용 대상:
    • sorted(): 모든 반복 가능한 객체에 사용 가능.
    • sort(): 리스트 객체에만 사용 가능.
  3. 원본 데이터:
    • sorted(): 원본 데이터를 변경하지 않음.
    • sort(): 원본 데이터를 직접 변경.

이 두 방법을 이해하고 상황에 맞게 사용하면 리스트를 보다 효율적으로 정렬할 수 있습니다.