파이썬에서 리스트를 정렬할 때는 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
'Language > Python' 카테고리의 다른 글
[Python] 집합(Set) 자료형 (0) | 2023.05.02 |
---|---|
[Python] 튜플(Tuple) 자료형 (0) | 2023.05.01 |
[Python] 리스트(List) 자료형 (0) | 2023.04.30 |
[Python] append()와 extend(), insert() (0) | 2023.04.29 |
[Python] 리스트(List) 정렬하기 (feat. sort(), sorted()) (1) | 2023.04.26 |
댓글