1 minute read

본 포스팅은 “윤성우의 열혈 파이썬 중급편” 책 내용을 기반으로 작성되었습니다. 잘못된 내용이 있을 경우 지적해 주시면 감사드리겠습니다.

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