<개인공부>/[Python]

[python] 파이썬 sort 리스트 정렬 (오름차순, 내림차순)

BlockDMask 2021. 9. 11. 00:30
반응형

안녕하세요. BlockDMask입니다.
오늘은 리스트 본체를 정렬하는 sort 함수에 대해서 이야기해볼까 합니다.
파이썬 sort 하면서 오름차순 혹은 내림차순으로 정렬하는 것도 설명드리겠습니다.

파이썬 sort 함수와 비슷하지만 다른 sorted 함수가 궁금하신 분들은 [바로가기]
파이썬 리스트에 대해서 더 궁금하시다면 리스트 총 정리 1편[바로가기], 정리 2편[바로가기]도 있습니다.

<목차>
1. 파이썬 sort 함수 설명과 예제
2. 파이썬 리스트 오름차순, 내림차순 정렬 (reverse 매개변수)

 

 

1. sort 함수 설명, 리스트 정렬 함수


1-1) sort 함수 기본

List.sort()

list.sort() 메서드는 list 객체 자체를 정렬해주는 함수입니다.
리스트에만 사용이 가능합니다. list 객체의 멤버 함수, 즉 메서드입니다.

list.sort() 함수는 기본적으로 리스트를 오름차순으로 정렬해주는 기능을 합니다.

**추가 설명
새로운 정렬된 리스트를 반환하는 함수는 sorted 함수이고, 
리스트 자체를 정렬시켜버리는 것은 sort 함수입니다.

 

1-2) sort 함수 예제

list_num = [33, 2, 81, -77, 44, 1, 10, 99, 5, 0, -2]
list_str1 = ['b', 'l', 'o', 'c', 'k', 'd', 'm', 'a', 's', 'k']
list_str2 = ['B', 'l', 'o', 'c', 'k', 'D', 'M', 'a', 's', 'k']

# 숫자 리스트 정렬
print("1. 숫자 리스트 정렬")
list_num.sort()
print(list_num)

# 문자열 리스트 정렬1 (소문자만)
print("\n2. 소문자 문자열 리스트 정렬")
list_str1.sort()
print(list_str1)

# 문자열 리스트 정렬2 (대/소문자 포함)
print("\n3. 대소문자 문자열 리스트 정렬")
list_str2.sort()
print(list_str2)

숫자리스트.sort() 의 결과
숫자리스트를 보면 음수, 0, 양수 이렇게 작은 수부터 큰 수로 오름차순으로 정렬해주는 것을 볼 수 있습니다.

소문자문자리스트.sort() 의 결과
우리가 알고 있는 알파벳순 a, b, c, d, e 순서로 잘 정렬되는 것을 볼 수 있습니다.

대소문자문자리스트.sort() 결과
대소문자 리스트.sort()는 대문자 ABCD 순으로 다 나온 후에, 소문자 abcd 순으로 정렬이 되는 것을 볼 수 있습니다.
이는, 문자 자체를 아스키코드 값에 대응해서 숫자로 판단하기 때문인데요.
아스키코드표에 보면 대문자 A는 65번에 해당하고 소문자 a는 97번에 해당합니다.
(구글에 '아스키코드표'라고 검색하면 표가 나옵니다)

즉, A~Z는 65~90 대역대에 존재하고 소문자 a~z는 97~122에 존재하게 됩니다.
여기서 문자의 sort() 기준은 아스키코드표에 각 문자에 대응하는 숫자에 따라 판단을 하기 때문에 65~90에 있는 대문자들을 쫘르륵 정렬한 후에, 97~122번에 있는 소문자가 오게 됩니다.

 

 

2. 파이썬 오름차순, 내림차순 정렬


리스트.sort() 함수에는 reverse 옵션(매개변수)이 존재합니다.
디폴트는 리스트.sort(reverse=False) 인 게 디폴트여서 리스트가 오름차순으로 정렬이 되는 것이고
리스트.sort(reverse=True)로 변경하면 리스트가 내림차순으로 정렬이 됩니다.

a = [3, 2, 8, 4, 1, 10, 99, 5]
b = [3, 2, 8, 4, 1, 10, 99, 5]
c = [3, 2, 8, 4, 1, 10, 99, 5]

# 기본값 (오름차순)
a.sort()
print("a.sort()")
print(a)

# 오름차순
b.sort(reverse=False)
print("\nb.sort(reverse=False)")
print(b)

# 내림차순
c.sort(reverse=True)
print("\nc.sort(reverse=True)")
print(c)

위처럼 세 가지 동일한 리스트가 있다고 할 때
sort(), sort(reverse=False), sort(reverse=True)로 정렬을 해보았습니다.

결괏값을 보셨다시피
sort(), sort(reverse=False)가 오름차순으로 정렬되고
sort(reverse=True)가 리스트를 내림차순으로 정렬하는 것을 볼 수 있습니다.

이렇게 오늘은 파이썬 리스트 자체를 정렬하는 sort 함수에 대해서 알아보았습니다.
오늘도 읽어주셔서 감사합니다.

반응형