sort()와 sorted()

si_yeon·2022년 1월 14일
0

sort() : list의 메소드로, list값을 정렬하여 반환한다.

sorted() : 내장함수로, 정렬된 새로운 리스트를 반환한다.

1. sort()

  • list.sort()를 하게 되면, list 원본 값이 수정되어 정렬된다.
    예를 들어보면,

    이런 식이다.

  • list2의 값이 None으로 나타나는 것을 보니 sort()함수는 정렬된 값을 따로 반환하지 않고, 원본을 in-place 식으로 변경하는 것 같다.

  • 프로그래머스에서 사용된 코드를 예로 들어보면

def solution(participant, completion):
    participant.sort()
    completion.sort()
    for i in range(len(completion)):
        if participant[i] != completion[i]:
            return participant[i]
    return participant[len(participant)-1]

이런 식으로 사용할 수 있다.

  • 두번째, 세번째 줄에 보면 함수의 매개변수로 들어온 값을 sort()메소드를 이용해 정렬된 값으로 변경하고 다음 코드를 이어간다.
  • 따로 변수에 지정할 필요가 없는 것이다.

2. sorted()

  • 내장함수로서, 원본객체는 그대로 두고 정렬된 객체를 반환한다. 예를 들어보면,

    이런 식이다.
    원본은 그대로이고, 정렬된 객체가 list2 에 저장되었다.

  • 또한 sort()가 리스트만을 위한 메소드라면,
    sorted()는 어떤 iterable 객체라도 받을 수 있다.
    예를 들면,

sorted({3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A'})

결과: [1, 2, 3, 4, 5]

이런 식으로 딕셔너리를 넣어 정렬할 수 있다.
하지만 이 코드는 결과값을 key값만 포함한다.

  • 모든 값을 포함하고 싶다면,
sorted({3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A'}.items())

결과: [(1, 'A'), (2, 'B'), (3, 'D'), (4, 'E'), (5, 'B')]

이렇게 뒤에 dict.items()를 활용하여 나타낼 수 있다.

  • 이 때 key값이 아닌 value 값을 기준으로 정렬하고 싶다면, sorted() 함수의 매개변수 중 하나인 key를 이용하여 정렬할 수 있다.
dict = {3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A'}
sorted(dict.items(), key = lambda x: x[1])

결과: [(1, 'A'), (2, 'B'), (5, 'B'), (3, 'D'), (4, 'E')]

단, key에는 lambda함수가 인자로 전달된다.
결과를 보면 value 값을 기준으로 정렬이 된 것을 볼 수 있다.
위의 lambda 함수에서 x[1]이 value 값이고, x[0]은 key값이다.

0개의 댓글

관련 채용 정보