goodthings4me.tistory.com
파이썬 sort()는 원본을 변경시키는 함수인 반면 sorted()는 원본을 변경시키지 않는 정렬 방법의 함수이다.
# 리스트 sort()
ls = [3, 1, 4, 2]
ls.sort() # 오름차순이 디폴트임
print(ls) # [1, 2, 3, 4] 원본 변경시킴
ls = [3, 1, 4, 2]
ls.sort(reverse = True) # 내림차순
print(ls)
lt = [('yoon', 33), ('lee', 35), ('park', 29)]
lt.sort()
print(lt) # [('lee', 35), ('park', 29), ('yoon', 33)] 이름 순
lt.sort(reverse = True)
print(lt) # [('yoon', 33), ('park', 29), ('lee', 35)] 이름 역순
# 나이로 정렬하는 sort() 만들기
# 리스트에 저장된 튜플을 인자로 전달받아 나이를 반환하는 함수를 sort()에 key로 전달
lt = [('yoon', 33), ('lee', 35), ('park', 29)]
def age(tu):
return tu[1] # 이름 반환은 tu[0]
lt.sort(key = age)
print(lt) # [('park', 29), ('yoon', 33), ('lee', 35)]
lt.sort(key = age, reverse = True)
print(lt) # [('lee', 35), ('yoon', 33), ('park', 29)]
# lambda 함수 사용해도 됨
lt.sort(key = lambda t: t[1]) # 이름은 lambda t: t[0]
print(lt) # [('park', 29), ('yoon', 33), ('lee', 35)]
# 문자열 길이로 정렬하기
lss = ['Julia', 'Yoon', 'Steeven', 'lee']
lss.sort(key = len)
print(lss) # ['lee', 'Yoon', 'Julia', 'Steeven']
# 리스트에 저장된 튜플 정렬하기
ltnums = [(3, 1), (2, 9), (0, 5), (4, 3)]
ltnums.sort(key = lambda t: t[0] + t[1], reverse = True)
print(ltnums) # [(2, 9), (4, 3), (0, 5), (3, 1)] / 합계 내림차순
# 원본이 변하지 않는 sorted()
ltd = [('yoon', 33), ('lee', 35), ('park', 29)]
cpy = sorted(ltd, key = lambda t: t[1])
print(cpy) # [('park', 29), ('yoon', 33), ('lee', 35)]
print(ltd) # [('yoon', 33), ('lee', 35), ('park', 29)]
# sort() 함수 못 쓰는 튜플을 sorted()를 사용하여 정렬하기
tu = (3, 1, 2, 4)
#tu.sort() # AttributeError: 'tuple' object has no attribute 'sort'
tcpy = sorted(tu)
print(tcpy) # [1, 2, 3, 4] / 리스트로 반환
print(tuple(sorted(tu))) # (1, 2, 3, 4)
# 튜플의 숫자문자열 정렬
org = ('412', '214', '197', '398')
t_cpy = tuple(sorted(org, key = lambda t: int(t[0])))
print(t_cpy) # ('197', '214', '398', '412')
[참고자료] 윤성우의 열혈파이썬 중급편
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
[python] 파이썬 클래스 상속(inheritance) (0) | 2020.09.10 |
---|---|
[python] 파이썬 클래스와 객체의 본질, 그리고 독특한 특성 (0) | 2020.09.09 |
[python] 파이썬 enumerate와 문자열 비교 (0) | 2020.09.08 |
[python] 파이썬 시간 관련 함수, time() datetime() timezone() (0) | 2020.09.08 |
[python] 순서와 중복을 허용하지 않는 파이썬 set(), frozenset() 함수 (0) | 2020.09.03 |
댓글