일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 강화학습
- Batch Normalization
- NULLIF
- LAG
- 웹서비스 기획
- 재현율
- ifnull
- 평가 지표
- 데이터 분석
- beautifulsoup
- layer normalization
- 오차 행렬
- SQL
- five lines challenge
- 백엔드
- 정밀도
- 빠르게 실패하기
- 감정은 습관이다
- DecisionTree
- 데이터 전처리
- sorted
- CASE WHEN
- nvl2
- NVL
- recall
- 결정트리
- 비지도학습
- 데이터 프로젝트
- Normalization
- 지도학습
- Today
- Total
Day to_day
[정렬하기] sort와 sorted 차이와 활용 본문
정렬하기
sort와 sorted의 차이
리스트를 제자리에서(in-place) 수정하는 내장 list.sort() 메서드
sorted(list)는 새로운 정렬된 리스트를 만드는 내장 함수
list.sort()
리스트를 제자리에서 수정하며, 원래 목록이 필요 없는 경우 효율적으로 사용할 수 있음
기본 예시 코드
A = [5, 9, 2, 1]
A.sort()
print(A)
# [1, 2, 5, 9]
그러나 sort() 메서드의 경우 리스트를 제자리에서 수정하기 때문에 새로운 리스트를 선언 후 print하면 None 을 반환
A = [5, 4, 5, 9, 1]
A_sorted = A.sort()
print(A_sorted)
# None
sorted(list)
기본 예시 코드
sorted_list = sorted([3,2,4,5])
print(sorted_list)
# [2,3,4,5]
list.sort()와 다른 점은 sort()는 리스트 요소에 대해서만 적용이 되지만 sorted() 함수는 모든 이터러블을 받아들인다.
sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
# [1, 2, 3, 4, 5]
또한 여러 옵션을 주어 정렬 할 수도 있다.
복잡한 객체를 하나의 값을 기준으로 정렬하고 싶을 때 : sorted()
cafe_menu = [
('americano', 1500, 'hot'),
('latte', 2500, 'hot'),
('iced tea', 3000, 'iced'),
('lemon ade', 2700, 'iced')
]
sorted_menu = sorted(cafe_menu, key=lambda menu: menu[1]) # sort by price
print(sorted_menu)
# [('americano', 1500, hot), ('latte', 2500, hot),('lemon ade', 2700, iced),('iced tea', 3000, iced)]
sorted()를 사용할 때 key 매개변수를 갖고있는데 다른 부분은 쉽게 이해되는데
key=lambda 부분을 어떻게 해석해야 할 지 몰라서 더 찾아보았다.
※ lambda 함수
이름없는 함수, 람다표현식은 익명 함수라고 생각할 수 있다.
함수를 따로 선언하지 않고 lambda로 대체 할 수 있는 것
f = lambda x : x+1
이런식으로 사용할 수 있다.
복잡한 객체를 하나의 값을 기준으로 정렬하고 싶을 때 : list.sort()
cafe_menu = [
('americano', 1500, 'hot'),
('latte', 2700, 'hot'),
('latte', 3000, 'iced'),
('iced tea', 3000, 'iced'),
('lemon ade', 2700, 'iced')
]
cafe_menu.sort(key=lambda menu: (menu[0], menu[1])) # sort by name and price
print(cafe_menu)
# [('americano', 1500, 'hot'), ('iced tea', 3000, 'iced'), ('latte', 2700, 'hot'),
# ('latte', 3000, 'iced'), ('lemon ade', 2700, 'iced')]
다음 예시는 sort()를 이용해서 첫 번째 예시를 응용해본 것.
menu: (menu[0], menu[1])로 만들어서 첫 번째 요소인 메뉴이름이 중복일 경우 다음으로 price를 비교해서 더 싼 가격 먼저 나열 하도록 한다.
물론 람다함수 안에서 menu : -menu[1] 과 같이 쓴다면 역순으로 정렬가능하다.
오름차순 내림차순
기본 default 값은 오름차순인데 내림차순으로 값을 얻으려면 reverse 매개변수를 이용한다.
A = [1,3,5,2,1,6]
sorted_A = sorted(A, reverse=True)
print(sorted_A)
# [6,5,3,2,1,1]
A = [1,3,5,2,1,6]
A.sort(reverse=True)
print(A)
# [6,5,3,2,1,1]
'Python' 카테고리의 다른 글
[Data Structure] Stack(스택)과 Queue(큐) 비교하기! (1) | 2023.01.19 |
---|---|
Object-Oriented Programming (OOP) (0) | 2023.01.17 |
계속 헷갈려하던 map과 filter함수 개념 및 활용 (2) | 2022.09.23 |