[Python] 14. 정렬 기술, enumerate와 문자열 비교
본 포스팅은 “윤성우의 열혈 파이썬 중급편” 책 내용을 기반으로 작성되었습니다. 잘못된 내용이 있을 경우 지적해 주시면 감사드리겠습니다.
14-1. 리스트의 sort 메소드
l = [3, 4, 1, 2]
l.sort() # 오름차순
l
l.sort(reverse = True) # 내림차순
l
(결과) [1, 2, 3, 4]
[4, 3, 2, 1]
def name(t):
return t[0]
def age(t):
return t[1]
tl = [('June', 30), ('young', 24), ('Won', 33)]
tl.sort
tl
tl.sort(key = name) # 이름 순 오름차순, tl.sort(key = lambda t: t[0]) 도 가능, 리스트에 저장된 튜플 하나씩 함수로 보냄.
tl
tl.sort(key = age, reverse = True) # 나이 순 내림차순, tl.sort(key = lambda t: t[1], reverse = True) 도 가능
tl
(결과) [('June', 30), ('young', 24), ('Won', 33)]
[('June', 30), ('Won', 33), ('young', 24)]
[('Won', 33), ('June', 30), ('young', 24)]
names = ['Eunney', 'Wonny']
names.sort(key=len) # 문자열 길이순
names
(결과) ['Wonny', 'Eunney']
nums = [(2, 4), (8, 1), (0, 3)]
nums.sort(key=lambda t: t[0]+t[1], reverse=True)
nums
(결과) [(8, 1), (2, 4), (0, 3)]
14-2. sorted 함수 사용
만약 원본은 두고 다른 변수에 원본을 정렬한 사본을 저장하고 싶다면 어떻게 해야할까?
tl = (('June', 30), ('young', 24), ('Won', 33))
tl_cp = sorted(tl, key=lambda t: t[1], reverse=True) # 정렬된 사본이 리스트에 담긴다! 동일하게 튜플로 만들고 싶으면 tuple(tl_cp) 쓰자!
tl
tl_cp
(결과) (('June', 30), ('young', 24), ('Won', 33))
[('Won', 33), ('June', 30), ('young', 24)]
14-3. 문자열 비교
'A' < 'Z'
'AA' < 'AZ'
'AA' < 'AAA'
'A' < 'a'
'가' < '나'
'가' < '구' # 아야어여오요우유으이 순으로 큼
'가가' < '가나'
'하하' < '하하하'
(결과) True
True
True
True
True
True
True
True
14-4. enumerate
enumerate 함수는 iterable 객체를 인자로 전달 받는다. 그러면 전달된 리스트의 값에 0부터 번호를 매겨서 튜플에 감싸 하나씩 반환한다.
names = ['삼성', '현대', '기아', 'SK', 'LG']
dnames = {k : x for k, x in enumerate(sorted(names), 1)}
dnames
(결과) {1: 'LG', 2: 'SK', 3: '기아', 4: '삼성', 5: '현대'}
Leave a comment