티스토리 뷰
파이썬 정렬함수
파이썬 정렬함수들은 기본적으로 정수형이면 크기순, 문자형이면 사전순으로 정렬한다.
1. sort()
<리스트>.sort(key=<함수>, reverse=<bool>)
sort()의 매개변수인 key, reverse 값을 정의하지 않으면 기본적으로 reverse=False 오름차순 정렬이다.
sort() 함수는 기존 데이터를 변경하는 방식으로 반환한다.
다음은 정수형을 오름차순, 내림차순으로 정렬하는 방법이다.
key 값을 이용하면 특정 조건(절댓값)을 기준으로 정렬할 수 있다.
num_list = [-2,0,4,10,-7]
num_list.sort() # 오름차순 정렬
print(num_list) #[-7, -2, 0, 4, 10]
num_list = [-2,0,4,10,-7]
num_list.sort(reverse=True) # 내림차순 정렬
print(num_list) # [10, 4, 0, -2, -7]
num_list = [-2,0,4,10,-7]
num_list.sort(key=abs) # key 기준으로 오름차순 정렬
print(num_list) # [0, -2, 4, -7, 10]
다음은 문자형을 오름차순, 내림차순으로 정렬하는 방법이다.
key 값을 이용하면 특정 조건(문자열 길이)을 기준으로 정렬할 수 있다.
str_list = ['dddd','bbb','aa','c']
str_list.sort() # 오름차순 정렬
print(str_list) #['aa', 'bbb', 'c', 'dddd']
str_list = ['dddd','bbb','aa','c']
str_list.sort(reverse=True) # 내림차순 정렬
print(str_list) # ['dddd', 'c', 'bbb', 'aa']
str_list = ['dddd','bbb','aa','c']
str_list.sort(key=len) # key 기준으로 오름차순 정렬
print(str_list) # ['c', 'aa', 'bbb', 'dddd']
2. sorted()
sorted(<리스트>, key=<함수>, reverse=<bool>)
sort()의 매개변수인 key, reverse 값을 넣지 않으면 기본적으로 reverse=False 오름차순 정렬입니다. sort() 함수는 새로운 리스트를 반환한다.
sort() 함수는 기존에 선언한 리스트를 변경하는 형식이지만,
sorted() 함수는 는 새로운 리스트를 반환하며 기존 리스트를 변경하지 않습니다.
다음은 숫자형을 절대값을 기준으로 오름차순, 내림차순 정렬하는 방법이다.
key 값을 이용하면 특정 조건(절댓값)을 기준으로 정렬할 수 있다.
num_list = [-2,0,4,10,-7]
sorted_list = sorted(num_list) # 오름차순 정렬
print(sorted_list) #[-7, -2, 0, 4, 10]
num_list = [-2,0,4,10,-7]
sorted_list = sorted(num_list, key=abs) # key를 기준으로 오름차순 정렬
print(sorted_list) # [0, -2, 4, -7, 10]
num_list = [-2,0,4,10,-7]
sorted_list = sorted(num_list, key=abs, reverse=True) # key를 기준으로 내림차순 정렬
print(sorted_list) # [10, -7, 4, -2, 0]
다음은 문자형을 문자열의 길이순을 기준으로 오름차순, 내림차순 정렬하는 방법이다.
key 값을 이용하면 특정 조건(문자열 길이)을 기준으로 정렬할 수 있다.
str_list = ["aa", "bbb", "c", "dddd"]
sorted_list = sorted(str_list) # 오름차순 정렬
print(sorted_list) #['aa', 'bbb', 'c', 'dddd']
str_list = ["aa", "bbb", "c", "dddd"]
sorted_list = sorted(str_list, key = len) # key를 기준으로 오름차순 정렬
print(sorted_list) #['c', 'aa', 'bbb', 'dddd']
str_list = ["aa", "bbb", "c", "dddd"]
sorted_list = sorted(str_list, key=len, reverse=True) # key를 기준으로 내림차순 정렬
print(sorted_list) #['dddd', 'bbb', 'aa', 'c']
3. sort(), sorted() + lambda 함수
sort나 sorted를 사용하여 정렬할때,
key 옵션에다가 lambda표현식을 사용하여 정렬할 수 있다.
lambda 함수의 사용 방법은 다음과 같다. >> lambda 인자:표현식
따라서, sorted(key = lambda x: x, reverse=<bool>) 형식으로 사용할 수 있다.
예시를 보면 더 이해하기가 쉬울 것이다.
아래는 2차원 배열을 정렬하는 방법으로, 행(배열의 0번째값) 또는 열(배열의 1번째값) 기준으로 정렬할 수 있다. 행 또는 열 기준으로 정렬하다보면 동일한 값이 있을때 다중조건을 사용하여 key = lambda x:(-x[1], x[0])로 나타낼 수 있습니다.
여기서, 오름차순 때는 옆과 같이 사용하며 key = lambda x:x[1]
내림차순 때는 마이너스를 사용하여 key = lambda x:-x[1] 나타낼 수 있다. (물론, reverse 사용 가능)
list = [[1,2], [3,1], [2,3],[2,2],[3,2]]
# 1. 기본적인 sorted() 함수 사용
sorted_list = sorted(list)
print(sorted_list) # [[1, 2], [2, 2], [2, 3], [3, 1], [3, 2]]
# 2. 2차원 배열의 0번째 값을 기준으로 오름차순
sorted_list = sorted(list,key=lambda x:x[0])
print(sorted_list) # [[1, 2], [2, 3], [2, 2], [3, 1], [3, 2]]
# 3. 2차원 배열의 1번째 값을 기준으로 오름차순
sorted_list = sorted(list,key=lambda x:x[1])
print(sorted_list) # [[3, 1], [1, 2], [2, 2], [3, 2], [2, 3]]
# 4. 2차원 배열의 1번째 값을 기준으로 내림차순
sorted_list = sorted(list,key=lambda x:-x[1])
print(sorted_list) # [[2, 3], [1, 2], [2, 2], [3, 2], [3, 1]]
# 5. 2차원 배열의 1번째 값(열)을 기준으로 오름차순 정렬하다가
# 같은 값이 있다면 배열의 0번째 값이 내림차순으로 정렬
sorted_list = sorted(list,key=lambda x:(x[1], -x[0]))
print(sorted_list)
+ dictionary 정렬
lambda를 이용하여 dictionary도 정렬가능하다.
다음은 딕셔너리 키를 이용하여 정렬한 예제이다.
dic = [
{'name':'kwon1', 'age':27},
{'name':'kwon3', 'age':29},
{'name':'kwon2', 'age':30}
]
sorted_dic = sorted(dic, key = lambda x: x['name'])
print(sorted_dic) # [{'name': 'kwon1', 'age': 27}, {'name': 'kwon2', 'age': 30}, {'name': 'kwon3', 'age': 29}]
sorted_dic = sorted(dic, key = lambda x: x['age'])
print(sorted_dic) # [{'name': 'kwon1', 'age': 27}, {'name': 'kwon3', 'age': 29}, {'name': 'kwon2', 'age': 30}]
다른 딕셔너리 정렬 예제이다.
dict = {
2: 3,
1: 3,
3: 5,
6: 3,
5: 2
}
# 딕셔너리의 키값들을 기준으로 정렬하며 키값을 출력
print(sorted(dict.keys(), key=lambda x: x))
# 딕셔너리의 value값들을 기준으로 정렬하며 value값을 출력
print(sorted(dict.values(), key=lambda x: x))
# 딕셔너리의 키값들을 X에 넣어, dict[x] 즉 dict의 value 기준으로 정렬하며 key값을 출력.
print(sorted(dict, key=lambda x: dict[x]))
# 딕셔너리의 키,값 쌍들을 매개변수 x에 넣어 키값 정렬하여 출력
print(sorted(dict.items(), key=lambda x: x[0]))
'파이썬' 카테고리의 다른 글
- Total
- Today
- Yesterday
- policy function
- omp: error #15
- adrew ng 머신러닝 강의
- 비용함수
- *args
- **kwargs
- baekjoon
- numpy 배열 생성
- 백준
- action value function
- 강의노트 정리
- Andrew Ng
- 앤드류응
- numpy 배열 속성
- NumPy
- computation graph
- 경사하강법
- 숏코딩
- sorted
- 딥러닝
- 11870
- python
- 손실함수
- state value function
- Sort
- 파이썬
- *
- 로지스틱 회귀
- **
- 강화학습
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |