ABOUT ME

-

  • [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')
    

    good4me.co.kr

     

    [참고자료] 윤성우의 열혈파이썬 중급편

     

     

Designed by goodthings4me.