본문 바로가기
Python/Data Structure

[Python] 리스트 내림차순, 오름차순으로 정렬하기

by 전봇대파괴자 2020. 10. 17.

파이썬에서 매우 중요한 자료형 중 하나인 리스트(list)의 내림차순, 오름차순 정렬방법을 알아보겠습니다.

리스트는 이름 그대로 대괄호 안에 숫자(int, float)나 문자(str)인 값들이 양옆으로 길게 늘어선 형태를 하고 있습니다. 

문자와 숫자가 섞인 리스트는 존재할 수 없으며, 리스트의 값은 전체가 숫자이거나 전체가 문자이거나 둘 중 하나입니다. 

 

설명은 이쯤하고 본격적으로 리스트를 정렬하는 방법을 알아보겠습니다. 

우선 샘플 리스트 두 개를 준비합니다. 

정수 리스트 하나, 문자 리스트 하나입니다.

# 샘플 리스트 두 개를 준비
# 정수
int_li=[1,2,3,4,5]

# 문자열
str_li=['a','b','c','d','e']

 

오름차순, 내림차순 정렬을 할 때는 sorted라는 함수를 사용합니다. 

예제는 아래와 같습니다. 

# 오름차순으로 리스트 정렬(정수)
int_li=sorted(int_li, reverse=False) # reverse 옵션의 기본값은 오름차순이므로 생략해도 무방

>> [1,2,3,4,5]

# 내림차순으로 리스트 정렬(정수)
int_li=sorted(int_li, reverse=True)

>> [5,4,3,2,1]

위의 예에서 볼 수 있듯이, 오름차순과 내림차순 정렬은 sorted 함수 안의 reverse 값에 따라 결정됩니다. 

디폴트값은 오름차순으로 되어있기 때문에, 내림차순으로 정렬하기 위해서는 반드시 True 값을 주어야 합니다!

 

이번에는 문자 리스트를 보겠습니다. 

사용법은 바로 위의 예제와 거의 같습니다. 

# 오름차순으로 리스트 정렬(문자)
str_li=sorted(str_li, reverse=False) # reverse 옵션의 기본값은 오름차순이므로 생략해도 무방

>> ['a','b','c','d','e']

# 내림차순으로 리스트 정렬(문자)
str_li=sorted(str_li, reverse=True)

>> ['e','d','c','b','a']

문자열은 기본적으로 알파벳 순서를 기준으로 정렬됩니다. 

오름차순은 a부터 z, 내림차순은 z부터 a의 순서가 되는 셈입니다. 

 

이번에는 조금 다른 예제를 보겠습니다. 

# 숫자를 담은 문자 리스트
only_int_li=['1', '2', '3', '4', '5']

# 대문자와 소문자가 섞인 문자 리스트
uplow_li=['A', 'b', 'C', 'd', 'E']

# 숫자와 문자가 섞인 문자 리스트
numalpha_li=['1', 'a', '2', 'b', '3']

 

이 리스트들을 먼저 오름차순으로 정렬해 보도록 하겠습니다.

 

# 숫자만 들어간 문자 리스트
sorted(only_int_li)

>> ['1', '2', '3', '4', '5']

# 대문자와 소문자가 섞인 문자 리스트
sorted(uplow_li)

>> ['A', 'C', 'E', 'b', 'd']

# 숫자와 문자가 섞인 문자 리스트
sorted(numalpha_li)

>> ['1', '2', '3', 'a', 'b']

 위의 결과에서 세 가지 사실을 알 수 있습니다. 

 

첫 번째, int나 float 자료형을 문자로 바꾸더라도 기본 정렬방식은 똑같다는 것. 

두 번째, 알파벳 순서와 상관없이 대문자와 소문자가 함께 있을 경우 정렬 시 대문자가 우선한다는 것.

세 번째, 숫자와 문자 중에서는 정렬 시 숫자가 우선한다는 것.

 

 

도움이 되었기를 바랍니다!