본문 바로가기
책 리뷰/파이썬 알고리즘 인터뷰

[파이썬] sort vs sorted

by 조조링 2024. 11. 15.
728x90
반응형

 

  • sort: 리스트 객체의 메서드이며, 원본을 변경하여 정렬한다.
  • sorted: 모든 iterable에 사용할 수 있는 함수로, 정렬된 새로운 리스트를 반환하며 원본 객체는 유지된다.

 

sort

sort는 리스트 객체에서만 사용할 수 있는 메서드로, 리스트 자체를 정렬한다.

이 메서드는 원본 리스트를 직접 변경하므로, 정렬된 새 리스트를 반환하지 않는다.

 

주요 파라미터

  • key: 정렬 기준을 설정. 기본값은 None이며, 각 요소가 자체 값에 따라 정렬된다.
  • reverse: 정렬 순서를 지정. 기본값은 False로 오름차순으로 정렬되며, True로 설정하면 내림차순
# 예시
numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)  # 결과: [1, 2, 5, 9]

 

 

sorted

sorted는 모든 iterable 객체(리스트, 튜플, 문자열 등)를 정렬하여 새로운 리스트로 반환하는 함수이다.

원본 객체는 변경되지 않으며, 정렬된 새 리스트를 반환한다.

 

주요 파라미터

  • iterable: 정렬할 객체(리스트, 튜플, 문자열 등)를 입력
  • key: sort와 동일하게 정렬 기준을 설정. 기본값은 None
  • reverse: 정렬 순서를 지정. 기본값은 False로 오름차순이며, True로 설정하면 내림차순
# 예시
numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 결과: [1, 2, 5, 9]
print(numbers)  # 원본: [5, 2, 9, 1]

 

 


 

sort와 sorted의 차이점

  • 사용 대상: sort는 리스트 객체에만 사용할 수 있는 메서드인 반면, sorted는 모든 iterable 객체에 사용할 수 있는 내장 함수
  • 원본 객체의 변화: sort는 원본 리스트 자체를 정렬하여 변경하고 반환값이 None이다. 반면 sorted는 정렬된 새로운 리스트를 반환하며, 원본 객체는 변하지 않는다.
  • 리턴값: sort는 원본을 변경하여 정렬되므로 None을 반환하고, sorted는 새로운 리스트를 반환한다.

 

 


각 함수별 사용 예시 및 결과

sort 예시

# 1. 기본 사용
numbers = [3, 1, 4, 1, 5]
numbers.sort()
print("오름차순 정렬:", numbers)  # 결과: [1, 1, 3, 4, 5]

# 2. 내림차순 정렬
numbers.sort(reverse=True)
print("내림차순 정렬:", numbers)  # 결과: [5, 4, 3, 1, 1]

# 3. key 파라미터 사용
words = ["banana", "apple", "cherry"]
words.sort(key=len)
print("길이 기준 정렬:", words)  # 결과: ['apple', 'banana', 'cherry']

 

 

sorted 예시

# 1. 기본 사용
numbers = [3, 1, 4, 1, 5]
sorted_numbers = sorted(numbers)
print("오름차순 정렬:", sorted_numbers)  # 결과: [1, 1, 3, 4, 5]
print("원본 리스트:", numbers)  # 결과: [3, 1, 4, 1, 5]

# 2. 내림차순 정렬
sorted_numbers = sorted(numbers, reverse=True)
print("내림차순 정렬:", sorted_numbers)  # 결과: [5, 4, 3, 1, 1]

# 3. key 파라미터 사용
words = ["banana", "apple", "cherry"]
sorted_words = sorted(words, key=len)
print("길이 기준 정렬:", sorted_words)  # 결과: ['apple', 'banana', 'cherry']

 

 

차이점에 따른 예시

# 리스트를 직접 변경하고 싶다면 sort를 사용
numbers = [10, 5, 8]
numbers.sort()
print("sort 결과:", numbers)  # [5, 8, 10]

# 원본을 유지하면서 정렬된 결과가 필요하다면 sorted를 사용
numbers = [10, 5, 8]
sorted_numbers = sorted(numbers)
print("sorted 결과:", sorted_numbers)  # [5, 8, 10]
print("원본 리스트:", numbers)  # [10, 5, 8]
728x90
반응형

댓글