본문 바로가기

TIL

[TIL] #4. sorted()와 sort()

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