[Python] sort vs sorted

Oayenn·2023년 7월 30일
0

Python

목록 보기
2/2
post-thumbnail
post-custom-banner

프로그래머스 문제를 풀다가 'NoneType' object has no attribute 'index' 에러가 발생했다.

def solution(emergency):
    sorted_emergency = emergency.sort(reverse=True)
    answer = [sorted_emergency.index(item) + 1 for item in emergency]
    
    return answer

문제의 부분은 이곳이었다.

sorted_emergency = emergency.sort(reverse=True)

list.sort() 메서드는 원본 리스트를 정렬하고, 반환값이 None이기 때문!
따라서 sorted_emergency에 None이 할당되어 이후 코드가 제대로 동작하지 않은 것이다. 정렬된 새로운 리스트를 반환하기 위해서는 sort()가 아닌 sorted() 메서드를 사용해야 한다.
sortsorted의 차이를 정리하면 다음과 같다.

🔥sort vs. sorted

1. sort()

  • 해당 리스트를 in-place(제자리)에서 정렬한다.
  • 즉, 원본 리스트를 변경하고 반환값은 None이다.
  • Ex :
    my_list = [3, 1, 2]
    my_list.sort()
    print(my_list)  # Output: [1, 2, 3]

2. sorted()

  • 원본 리스트를 변경하지 않고, 입력된 데이터를 정렬한 새로운 리스트를 반환한다.
  • 리스트 뿐만 아니라 모든 반복 가능한(iterable) 데이터 구조에 사용할 수 있다.
  • Ex :
    my_list = [3, 1, 2]
    sorted_list = sorted(my_list)
    print(sorted_list)  # Output: [1, 2, 3]
    print(my_list)      # Output: [3, 1, 2] (원본 리스트는 변경되지 않음)
profile
차근차근 쌓아올리기
post-custom-banner

0개의 댓글