sort() 함수는 Python의 내장 함수를 사용하여 정렬하는 방법이다.
사용 시 주의 사항
1. sort() 함수는 sorted() 함수와 다르게 Return Value가 존재하지 않음
2. Key 함수를 사용하면 List 내부의 Element에서 특정 조건에 따라 정렬할 수 있음
Sort 함수란?
: 리스트 내부에 있는 요소들을 정렬해주는 함수 (Default : 오름차순)
사용법
sort(*, key: Optional[Callable[[_T], Any]]=..., reverse: bool=...) -> None
list.sort()
list.sort(reverse=True)
list.sort(key = lambda x : x['age'], reverse=True)
...
예시
리스트에 sort 함수를 쓸 경우 Return Value는 None이 반환되므로 None이 출력되었다.
# Sort
lst = [5, 2, 3, 1, 8]
print(lst.sort())
print(lst)
lst2 = [1, 5, 3, 20, 11]
lst.sort(reverse=True)
print(lst)
❯ python python/practice/sort.py
None
[1, 2, 3, 5, 8]
[8, 5, 3, 2, 1]
- 중요 포인트
숫자가 아닌 문자열이 오더라도 정렬이 가능하다.
⇒ Unicode를 기준으로 정렬하게 된다.
korean_list = ["안녕", "하세요", "반값습니다."]
korean_list.sort()
print(korean_list)
english_list = ["i", "love", "you"]
english_list.sort()
print(english_list)
mixed_list = ["hello", "world", "안녕", "하세요"]
mixed_list.sort(reverse=True)
print(mixed_list)
print(f"H : {ord('H')}")
print(f"반 : {ord('반')}")
❯ python python/practice/sort.py
['반값습니다.', '안녕', '하세요']
['i', 'love', 'you']
['하세요', '안녕', 'world', 'hello']
H : 72
반 : 48152
Sort 함수의 옵션 중 Key 함수를 이용한 정렬
: 특정한 조건에 따라 List를 정렬하고 싶다면 Key 함수를 활용하여 정렬할 수 있음
다음의 고민을 할 수 있다.
- 리스트 내 Element의 길이를 기준으로 정렬하고 싶다면 어떻게 할까?
- 리스트 안에 리스트 or 튜플 or 문자열과 같은 Iterable한 Element들이 존재하고 그 요소들의 특정 인덱스에 위치한 것을 기준으로 정렬하고 싶다면 어떻게 할까?
- 딕셔너리의 Value를 이용하여 정렬할 수는 있을까?
예시1)
sort 함수를 사용하였으며, Key = lambda를 활용하였음
key는 정렬 시 비교할 값을 Return하는 함수이며, x는 리스트 내 Element를 의미한다.
- lst는 Iterable이다. 각각의 Element를 돌면서 len(x), 각 Element의 길이를 기준으로 Sort함
- lst2 또한 Iterable, 각각의 Element의 1번째 인덱스의 값을 기준으로 Sort함
- lst3는 Dictionary 내 age란 Key에 담겨 있는 Value를 기준으로 정렬하였고, 내림차순
lst = ["i", "love", "you", "hello", "world!"]
lst.sort(key = lambda x : len(x))
print(lst)
lst2 = [(1, 2), (3, 4), (10, 20), (30, 50)]
lst2.sort(key = lambda x : x[1], reverse=True)
print(lst2)
lst3 = [
{
'name': '홍길동',
'age': 20
},
{
'name': '유재석',
'age': 50
},
{
'name': '이광수',
'age': 40
},
{
'name': '강호동',
'age': 52
}
]
lst3.sort(key = lambda x : x['age'], reverse=True)
print(lst3)
❯ python python/practice/sort.py
['i', 'you', 'love', 'hello', 'world!']
[(30, 50), (10, 20), (3, 4), (1, 2)]
[{'name': '강호동', 'age': 52}, {'name': '유재석', 'age': 50},
{'name': '이광수', 'age': 40}, {'name': '홍길동', 'age': 20}]
** 참고로 sorted() 함수와 사용법은 유사하나 sorted() 함수는 정렬된 리스트를 반환해준다.
⇒ 기존의 리스트를 변경하지 않고 정렬된 리스트를 새롭게 얻을 수 있음
⇒ 정렬을 하는 동시에 Deep Copy도 이루어지기 때문에 원본 데이터에 영향을 주지 않음
lst = [1, 6, 2, 10, 5]
print(sorted(lst))
lst2 = [[1, 2], [5, 3], [10, 20], [30, 650]]
new_lst2 = sorted(lst2, key = lambda x : x[1])
print(new_lst2)
'Programming > Python' 카테고리의 다른 글
[Python] 웹크롤링으로 AWS Personal health dashboard 이벤트 긁어오기 자동화 (0) | 2022.02.16 |
---|---|
[Boto3] RDS의 Parameter Group 값을 CSV 추출 스크립트 (0) | 2021.08.23 |
[Python] Boto3로 Security Group rule 추가 (csv 파일 이용) (3) | 2021.08.14 |
[Python] 객체지향에서 필수 개념인 Property, Getter, Setter 간단히 알아보기 (0) | 2021.07.10 |
[Python] Decorator 개념 간단히 알아보기 (0) | 2021.07.10 |