Language/Python

[Python] sort(), sorted() 차이

개발기록자 2023. 4. 25.

파이썬에서 리스트를 정렬할 때는 sort()와 sorted()가 자주 사용됩니다. sort()와 sorted()는 비슷해 보이지만 내부적으로 처리하는 방식과 반환값이 다릅니다. 이 글에서는 sort()와 sorted()의 개념과 차이에 대해 알아보겠습니다.


sort()와 sorted()

1. sort()

  • sort() 함수는 리스트 자체를 정렬하는 함수로, 원본 리스트를 직접적으로 변경하여 정렬된 결과를 반환합니다. 즉 기존의 리스트를 수정하여 정렬된 결과를 반환합니다.
  • sort() 함수는 List 객체의 메소드로 List 객체에서만 사용 가능합니다.
  • sort() 함수는 내부에서 원소의 위치를 바꾸는 정렬 방식을 사용하기 때문에 정렬을 위해 추가적인 메모리를 사용하지 않습니다. 따라서, 리스트가 크거나 메모리가 제한된 환경에서는 sort() 함수를 사용하는 것이 효율적입니다.

 

2. sorted()

  • sorted() 함수는 원본 리스트를 복사하여 새로운 리스트를 생성하고, 이 리스트를 정렬하여 결과를 반환합니다. 즉 원본 리스트는 변경되지 않고 정렬된 새로운 리스트를 반환합니다.
  • sorted() 함수는 파이썬 내장 함수로 iterable 객체에서 사용 가능합니다.
  • sorted() 함수는 정렬된 새로운 리스트를 반환하기 때문에 원본 리스트를 보존해야 하는 경우 사용하기 좋습니다.
  • sorted() 함수는 정렬된 새로운 리스트를 만드는 과정에서 메모리를 추가적으로 사용하기 때문에 sort보다 느려질 수 있습니다.
iterable 객체란 반복 가능한 객체를 말합니다. 즉 여러 개의 원소를 가지고 있으며 한 번에 하나의 원소씩 차례대로 반환될 수 있는 객체를 의미합니다.
Ex) List(리스트), Tuple(튜플), Dictionary(딕셔너리) …

 


실습 코드

1. sort()를 이용한 정렬

lst = [3, 1, 4, 2, 5]

lst.sort() # 리스트를 오름차순으로 정렬
print(lst) # [1, 2, 3, 4, 5]

lst.sort(reverse=True) # 리스트를 내림차순으로 정렬
print(lst) # [5, 4, 3, 2, 1]

 

※ sort() 반환값

lst = [3, 1, 4, 2, 5]

new_lst = lst.sort() # sort()의 반환값은 None
print(new_lst) # None

sort()의 반환값은 None입니다.

 

2. sorted()를 이용한 정렬

- List

lst = [3, 1, 4, 2, 5]

new_lst1 = sorted(lst) # 리스트를 오름차순으로 정렬한 새로운 리스트를 반환
print(lst) # [3, 1, 4, 2, 5]
print(new_lst1) # [1, 2, 3, 4, 5]

new_lst2 = sorted(lst, reverse=True) # 리스트를 내림차순으로 정렬한 새로운 리스트를 반환
print(lst) # [3, 1, 4, 2, 5]
print(new_lst2) # [5, 4, 3, 2, 1]

- Tuple

tpl = tuple([3, 1, 4, 2, 5])

new_lst = sorted(tpl) # 튜플을 오름차순으로 정렬한 새로운 리스트를 반환
print(new_lst) # [1, 2, 3, 4, 5]

튜플 구조지만 반환되는 것은 리스트 형태입니다.

 


정리

요약

 


참조

https://docs.python.org/ko/3/library/stdtypes.html?highlight=sort#list.sort

 

Built-in Types

The following sections describe the standard types that are built into the interpreter. The principal built-in types are numerics, sequences, mappings, classes, instances and exceptions. Some colle...

docs.python.org

 

https://docs.python.org/ko/3/library/functions.html?highlight=sorted#sorted

 

Built-in Functions

The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...

docs.python.org

 

댓글