이 글에서는 파이썬에서 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 |
댓글