• 2020. 6. 16.

    by. 윈썸지니

    반응형

    출처 : Pixabay

     

    이번 포스팅은 리스트 정렬 방법 및 기타 리스트 관련 메소드에 관한 내용입니다.

     

    리스트 정렬

     

    리스트 정렬 관련 메소드 및 함수는 아래와 같습니다.

    sort() : 리스트를 내림차순 또는 오름차순으로 정렬합니다.

    sorted() :  sort() 와 같은 기능이지만 sort()는 자신의 리스트를 변경하지만 sorted는 결과 값을 반환합니다.

    reverse() : 리스트를 뒤집어 줍니다. 순서대로 역순의 뜻이 아니고 단지 리스트를 거꾸로 뒤집어 줍니다.

    reversed() : reverse() 와 같은 기능이지만 reverse()는 자신의 리스트를 변경하지만 reversed는 결과 값을 반환합니다.

     

    사용방법은  아래와 같습니다.

    sort()  또는 sort(reverse=False)  => 오름차순 정렬

    sort(reverse=True)   => 내림차순 정렬

    >>> x = [ 10, 2, 5, 4, 7 ]
    ## 오름 차순 정렬입니다.
    >>> x.sort()
    >>> x
    [2, 4, 5, 7, 10]

    ## 중복값도 당연히 되겠지만 중복값도 입력해 보았습니다.
    >>> x = [ 5, 5, 4, 3, 8, 3]
    >>> x.sort()
    >>> x
    [3, 3, 4, 5, 5, 8]

    ## 내림차순 정렬입니다.
    >>> x = [ 5, 5, 4, 3, 8, 3]
    >>> x.sort(reverse=True)
    >>> x
    [8, 5, 5, 4, 3, 3]

    ## 알파벳도 정렬해 봅니다.
    >>> x = ['c', 'f', 'b', 'a']
    >>> x.sort()
    >>> x
    ['a', 'b', 'c', 'f’]

    ## 문자열은 첫자를 우선 기준으로 정렬합니다.
    >>> x =  ['1dff', 'tss', 'high', 'low', 'abc']
    >>> x.sort()
    >>> x
    ['1dff', 'abc', 'high', 'low', 'tss']
    >>> 

     

    sorted() 는 함수로 정렬한 리스트를 값으로 반환합니다.

    >>> x = [ 5, 4, 3, 2, 1]
    >>> sorted(x)
    [1, 2, 3, 4, 5]
    >>> y= sorted(x)
    >>> y
    [1, 2, 3, 4, 5]
    >>> 

     

    중첩 리스트에 대해 테스트 해 보았습니다.

    원소수는 상관 없지만 같은 레벨이여야 정렬 가능합니다.

    첫번째 원소 기준,   다음 두번째 원소 기준으로 정렬합니다.

    >>> x = [ ['a', 'b'], ['a', 'c']]
    >>> x.sort()
    >>> x
    [['a', 'b'], ['a', 'c']]
    >>> x = [[3, 4], [2,3], [2,1]]
    >>> x.sort()
    >>> x
    [[2, 1], [2, 3], [3, 4]]
    >>> x = [[4, 5], [ 6, 1], [2, 1, 1]]
    >>> x.sort()
    >>> x
    [[2, 1, 1], [4, 5], [6, 1]]
    >>> x =  [[4, 5], [ 6, 1], [2, 1, 1], 0]
    >>> x.sort()
    Traceback (most recent call last):
      File "<pyshell#44>", line 1, in <module>
        x.sort()
    TypeError: '<' not supported between instances of 'int' and 'list'

     

    reverse 는 단지 리스트를 역으로 뒤집는 것이고 역순 정렬이 아닙니다.

     

    예제를 통해 알아 보겠습니다.

    아래 예제를 보면 아시겠지만, 역순이 아니고 그냥 순서를 거꾸로 보여 줍니다.

    따라서 sort와는 다르게 리스트의 차원( 중첩 리스트)이 달라도 단지 순서만 바꾸어 주는 것이므로 가능합니다.

    >>> x = [1,2,3,4,3,5]
    >>> x.reverse()
    >>> x
    [5, 3, 4, 3, 2, 1]
    >>> x = ['a', 'bc', 'ab', 'fg']
    >>> x.reverse()
    >>> x
    ['fg', 'ab', 'bc', 'a']
    >>> x = [ [1,2], [2,1],[3,4],[5,6]]
    >>> x.reverse()
    >>> x
    [[5, 6], [3, 4], [2, 1], [1, 2]]
    >>> x = [ 1, [3,4], 5, [6,7,[8,9]], 10]
    >>> x.reverse()
    >>> x
    [10, [6, 7, [8, 9]], 5, [3, 4], 1]
    >>> 

    reversed() 예상하셨겠지만  파이썬 함수로 변환된 값을 반환해 줍니다. 

    자기자신을 변환하지는 않습니다.

    , 반환된 값을 list()라는 함수를 사용하여 list 자료형으로 변환해 주어야 합니다.

    >>> x = [1,2,3,4,3,5]
    >>> y = reversed(x)
    >>> y
    <list_reverseiterator object at 0x000002E26BD65040>
    >>> list(y)
    [5, 3, 4, 3, 2, 1]
    >>> x
    [1, 2, 3, 4, 3, 5]
    >>> x = [ 1, [3,4], 5, [6,7,[8,9]], 10]
    >>> y = reversed(x)
    >>> y
    <list_reverseiterator object at 0x000002E26BD04340>
    >>> list(y)
    [10, [6, 7, [8, 9]], 5, [3, 4], 1]
    >>> x
    [1, [3, 4], 5, [6, 7, [8, 9]], 10]
    >>> 

     

    파이썬의 리스트 정렬에 관한 메소드 및 함수에 대해 알아 보는 시간이였습니다.

    다음 포스팅은 라스트의 마지막 남은 메소드 및 함수에 대해 포스팅 예정입니다.

    반응형