파이썬으로 문제를 풀다보면, 여러 조건으로 소팅을 해야하는 경우가 있다.
일반적인 소팅은 다음과 같이 sorted() 혹은 .sort() 를 사용한다.
a = [4,1,2,5,7,3,6]
b = sorted(a)
# b = [1,2,3,4,5,6,7]
sorted() 를 찬찬히 살펴보면 다음과 같다.
a = [(1, 2), (0, 1), (5, 1), (5, 2), (3, 0)]
# 인자없이 그냥 sorted()만 쓰면, 리스트 아이템의 각 요소 순서대로 정렬을 한다.
b = sorted(a)
# b = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
# key 인자에 함수를 넘겨주면 해당 함수의 반환값을 비교하여 순서대로 정렬한다.
c = sorted(a, key = lambda x : x[0])
# c = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
d = sorted(a, key = lambda x : x[1])
# d = [(3, 0), (0, 1), (5, 1), (1, 2), (5, 2)]
# 아이템 첫 번째 인자를 기준으로 오름차순으로 먼저 정렬하고,
# 그리고 그 안에서 다음 두 번째 인자를 기준으로 내림차순으로 정렬하게 하려면, 다음과 같이 할 수 있다.
e = [[1, 3], [0, 3], [1, 4], [1, 5], [0, 1], [2, 4]]
f = sorted(e, key = lambda x : [x[0], -x[1]])
e = [(1, 3), (0, 3), (1, 4), (1, 5), (0, 1), (2, 4)]
f = sorted(e, key = lambda x : (x[0], -x[1]), reverse=True)
# f = [(0, 3), (0, 1), (1, 5), (1, 4), (1, 3), (2, 4)]
str_list = ['좋은하루','good_morning','굿모닝','niceday']
print(sorted(str_list, key=len)) # 길이를 기준으로 정렬
dequ에서 sort 하기
from collections import deque
jobs = [[0, 3], [1, 9], [2, 6],[1, 5]]
tasks = deque(sorted([x for x in jobs], key=lambda x: (x[0], x[1])))
print(tasks)
heapq에 들어온 리스트를 정렬하기
heappq는 앞에 있는 것을 우선으로 차래로 정렬한다.
e = [[2, 4],[1, 5], [0, 3], [0, 1]]
heapq.heapify(e) # [[0, 1], [1, 5], [0, 3], [2, 4]]
'코딩 테스트 > 코딩테스트 - 학습' 카테고리의 다른 글
문자열 (0) | 2023.01.25 |
---|---|
다익스트라 (0) | 2023.01.20 |
완전 탐색 (0) | 2023.01.18 |
dfs bfs (0) | 2023.01.14 |
코딩 테스트 파이썬 문법 (중간편) (0) | 2023.01.12 |