-
[python] 파이썬 sort(), sorted() 알아보기코딩 연습/코딩배우기 2020. 9. 8. 23:03
파이썬 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