sorted()와 sort()
Python에서 데이터를 정렬할 때 무엇을 써야할까?
sort()
sorted()
먼저 sort()
는 list()
의 메서드 중 하나이고 sorted()
는 Python의 Built-in Function이다. 위 두가지를 사용하여 데이터를 정렬했을 때 어떤 차이가 있는지 알아보자.
정렬하기
1. sort()
>>> a = [5, 2, 7, 4, 1]
>>> print(a.sort())
None
>>> print(a)
[1, 2, 4, 5, 7]
sort()
로 리스트를 정렬하여 출력하면 리턴값은 None이다. 즉, sort()
는 정렬한 결과를 새로운 값으로 리턴하지 않고 in-place로 작동하여 원래 리스트의 값을 정렬한 상태로 바꿔놓기만 하는 것이다.
2. sorted()
>>> a = [5, 2, 7, 4, 1]
>>> print(sorted(a))
[1, 2, 4, 5, 7]
>>> print(a)
[5, 2, 7, 4, 1]
sorted()
는 정렬한 리스트의 결과를 리턴한다. 즉, 원래 리스트는 정렬되지 않고 그대로 유지된다.
역순
기본적으로 sort()
와 sorted()
모두 default는 오름차순 정렬이다. 내림차순으로 정렬할 때는 reverse=True
옵션을 사용한다.
>>> a = [5, 2, 7, 4, 1]
>>> a.sort(reverse=True)
>>> print(a)
[7, 5, 4, 2, 1]
>>> print(sorted(a, reverse=True))
[7, 5, 4, 2, 1]
문자형 자료의 경우 default는 사전순으로 정렬한다. reveres=True
이면 사전 역순.
>>> alpha = ['g','d','a','t','z']
>>> alpha.sort()
>>> print(alpha)
['a', 'd', 'g', 't', 'z']
>>> print(sorted(alpha))
['a', 'd', 'g', 't', 'z']
알고리즘 문제를 풀다가 문자열 정렬을 할 일이 있었는데, sort()
를 사용해서 정렬했다가 리턴값이 None이 나와서 '뭐지...' 이러면서 시간을 버렸던 적이 있다. 리턴값이 있는건 sorted()
, 없는건 sort()
!! 기억해두자.😼
'TIL' 카테고리의 다른 글
[TIL] #6. HTTP (0) | 2021.03.14 |
---|---|
[TIL] #5. sys.stdin.readline() (0) | 2021.03.03 |
[TIL] #3. List Comprehension (0) | 2021.02.25 |
[TIL] #2. 자기소개 페이지 만들기 (0) | 2021.02.21 |
[TIL] #1. HTML (0) | 2021.02.10 |