Language/Python

[Python] 리스트(List) 정렬하기 (feat. sort(), sorted())

개발기록자 2023. 4. 26.

이 글에서는 파이썬에서 sort()와 sorted()를 활용하여 리스트(List)를 정렬하는 방법에 대해 알아보겠습니다.

sort()와 sorted()에 대한 내용은 앞서 포스팅한 글을 보시면 되겠습니다.

 

- sort()와 sorted() 차이

 

[Python] sort(), sorted() 차이

sort()와 sorted() 파이썬에서 리스트를 정렬할 때 자주 사용되는 sort()와 sorted()에 대해 알아보겠습니다. sort()와 sorted()는 비슷해 보이지만 내부적으로 처리하는 방식과 반환값이 다릅니다. 1. sort() s

dev-records.tistory.com


리스트(List) 정렬하기

1. 기본 정렬

1) 오름차순 정렬

sort()와 sorted()는 기본적으로 오름차순으로 정렬합니다.

lst1 = [3, 1, 4, 2, 5]

lst1.sort() # 리스트를 오름차순으로 정렬
print(lst1) # [1, 2, 3, 4, 5]
lst2 = ['a', 'y', 'd', 'x', 'k', 'f']

lst2.sort() # 리스트를 오름차순으로 정렬
print(lst2) # ['a', 'd', 'f', 'k', 'x', 'y']
lst3 = ['zah', 'abc', 'def', 'ag']

new_list = sorted(lst3) # 리스트를 오름차순으로 정렬
print(new_list) # ['abc', 'ag', 'def', 'zah']

 

2) 내림차순 정렬

내림차순으로 정렬하려면 'reverse' 옵션에 'Ture' 값을 설정합니다.

lst1 = [3, 1, 4, 2, 5]

lst1.sort(reverse=True) # 리스트를 내림차순으로 정렬
print(lst1) # [5, 4, 3, 2, 1]
lst2 = ['a', 'y', 'd', 'x', 'k', 'f']

lst2.sort(reverse=True) # 리스트를 내림차순으로 정렬
print(lst2) # ['y', 'x', 'k', 'f', 'd', 'a']
lst3 = ['zah', 'abc', 'def', 'ag']

new_list = sorted(lst3, reverse=True) # 리스트를 오름차순으로 정렬
print(new_list) # ['zah', 'def', 'ag', 'abc']

 

2. 원하는 순서로 정렬하기

단순한 오름차순, 내림차순이 아닌 원하는 순서에 맞게 정렬을 하려면 'key' 옵션을 사용하여 정렬합니다.

 

아래는 몇 가지 예시입니다.

 

1) 문자열의 길이순으로 정렬

lst = ['apple', 'banana', 'kiwi', 'orange']

lst.sort(key=len) # 문자열 길이순으로 정렬
print(lst) # ['kiwi', 'apple', 'banana', 'orange']

 

2) 절대값을 기준으로 정렬

lst = [3, -6, 1, -8, 2, -5]

lst.sort(key=abs) # 절대값을 기준으로 정렬
print(lst) # [1, 2, 3, -5, -6, -8]

 

3) iterable을 원소로 가지는 List에서 정렬

- Tuple을 원소로 가지는 List에서 2번째 원소를 기준으로 오름차순 정렬

lst1 = [('apple', 3), ('banana', 1), ('kiwi', 2), ('orange', 4)]

lst1.sort(key=lambda x: x[1]) # 2번째 원소를 기준으로 오름차순 정렬
print(lst1) # [('banana', 1), ('kiwi', 2), ('apple', 3), ('orange', 4)]

 

- List를 원소로 가지는 List(2차원 List)에서 2번째 원소를 기준으로 내림차순 정렬

lst2 = [['apple', 3], ['banana', 1], ['kiwi', 2], ['orange', 4]]

lst2.sort(key=lambda x: -x[1]) # 2번째 원소를 기준으로 내림차순 정렬
print(lst2) # [['orange', 4], ['apple', 3], ['kiwi', 2], ['banana', 1]]

 

- 2차원 List에서 2번째 원소를 기준으로 내림차순, 3번째 원소를 기준으로 오름차순 정렬

lst3 = [['apple', 1, 300], ['banana', 2, 150], ['kiwi', 2, 400], ['orange', 1, 1000]]

lst3.sort(key=lambda x: (-x[1], x[2])) # 2번째 원소를 기준으로 내림차순, 3번째 원소를 기준으로 오름차순 정렬
print(lst3) # [['orange', 4], ['apple', 3], ['kiwi', 2], ['banana', 1]]

파이썬에서 제공하는 sort()와 sorted()를 잘 이용하면, 원하는 순서로 정렬할 수 있습니다. 이외에도 기존 순서를 기준으로 순서를 반전시키는 reverse()와 reversed()가 존재하며, 상황에 맞게 사용하면 되겠습니다.

 

 

 

'Language > Python' 카테고리의 다른 글

[Python] 집합(Set) 자료형  (0) 2023.05.02
[Python] 튜플(Tuple) 자료형  (0) 2023.05.01
[Python] 리스트(List) 자료형  (0) 2023.04.30
[Python] append()와 extend(), insert()  (0) 2023.04.29
[Python] sort(), sorted() 차이  (0) 2023.04.25

댓글