출처 : 윤성우의 열혈 파이썬 : 중급
19. 정렬 기술
리스트의 sort 메소드
ns = [3, 1, 4, 2]
ns.sort() # 오름차순
ns.sort(reverse = True) # 내림차순
ns = [('Yoon', 33), ('Lee', 12), ('Park', 29)]
def age(t):
return t[1] # 나이 반환
# 매개변수 key에 함수 age를 전달
ns.sort(key = age)
# 이름의 알파벳 역순으로 정렬
ns.sort(key = lambda t : t[1], reverse = True)
# 문자열의 길이를 기준으로
names = ['Julia', 'Yoon', 'Steven']
names.sort(key = len)
nums = [(3, 1), (2, 9), (0, 5)]
nums.sort(key = lambda t : t[0] + t[1], reverse = True)
sorted 함수 사용하기
org = [('Yoon', 33), ('Lee', 12), ('Park', 29)]
cpy = sorted(org, key = lambda t : t[1], reverse = True)s
print(org) # 원본
print(cpy) # 정렬된 사본
- sort 메소드의 문제점 : 리스트 자체를 수정해버린다
- sorted 메소드를 사용해 원본은 그대로 두고 정렬된 사본을 얻을 수 있다
org = (3, 1, 2)
cpy = sorted(org)
print(org) # (3, 1, 2)
print(cpy) # [1, 2, 3]
# 원본과 동일한 자료형을 유지
cpy = tuple(sorted(org))
print(cpy) # (1, 2, 3)
# 정렬된 튜플
org = ('321', '214', '197')
cpy = tuple(sorted(org, key = lambda s : int(s[0])))
print(cpy) # ('197', '214', '321')
- 튜플은 sort 메소드가 존재하지 않음 : 내용 수정 불가하기 때문
- 반면, sorted 함수는 iterable 객체면 무엇인든 전달 가능
'프로그래머 > Python' 카테고리의 다른 글
[윤성우의 열혈 파이썬 중급편] 21. 표현식 기반 문자열 조합 (0) | 2020.12.24 |
---|---|
[윤성우의 열혈 파이썬 중급편] 20. enumerate와 문자열 비교 (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 18. 자료형 분류와 set & frozenset (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 17. dict & OrderedDict (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 16. dict & defaultdict (0) | 2020.12.24 |