[python] 파이썬 sort 리스트 정렬 (오름차순, 내림차순)
안녕하세요. 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 함수에 대해서 알아보았습니다.
오늘도 읽어주셔서 감사합니다.