Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- go
- restapi graphql
- 스택 괄호
- 스택 구현
- 스택 유효성
- 스택 삽입
- grid flex
- 괄호 유효성
- 중위수식을 후위수식
- 자료구조 데크
- 스택 중위수식
- 스택 후위수식
- grid html
- 스택 삭제
- 데크 구현
- 루비 초보
- 후위수식
- rest gql
- 스택 자료구조
- 풀스택
- 중위수식
- rest graphql
- Django tutorial
- 장고 웹 만들기
- flex html
- 장고 하는법
- https://stackoverflow.com/questions/219110/how-python-web-frameworks-wsgi-and-cgi-fit-together/219124#219124
- 괄호 짝 잘맞는지
- 풀스택?
- golang
Archives
- Today
- Total
donchanee
Python sorting 본문
728x90
파이썬으로 문제를 풀다보면, 여러 조건으로 소팅을 해야하는 경우가 있다.
일반적인 소팅은 다음과 같이 sorted() 혹은 .sort() 를 사용한다.
sorted() 를 찬찬히 살펴보면 다음과 같다.
a = [4,1,2,5,7,3,6]
b = sorted(a) # b = [1,2,3,4,5,6,7]
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]))
# f = [(0, 3), (0, 1), (1, 5), (1, 4), (1, 3), (2, 4)]
정리하면,
- sorted()의 key 인자로, 내가 커스텀할 비교 함수를 보내주면 넣어주면 된다.
- 비교 함수는 비교할 아이템의 요소를 반환하면 된다.
- 비교 함수는 익명 함수(lambda) 도 가능하고, 별도로 정의해도 된다.
- 비교할 아이템의 요소가 복수 개일 경우, 튜플로 그 순서를 내보내주면 된다.
- ex. sorted(e, key = lambda x : (x[0], -x[1]))
- -를 붙이면, 현재 정렬차순과 반대로 하게 된다.