프로그래머스 문제를 풀다가 '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() 메서드를 사용해야 한다.
sort
와 sorted
의 차이를 정리하면 다음과 같다.
None
이다.my_list = [3, 1, 2]
my_list.sort()
print(my_list) # Output: [1, 2, 3]
my_list = [3, 1, 2]
sorted_list = sorted(my_list)
print(sorted_list) # Output: [1, 2, 3]
print(my_list) # Output: [3, 1, 2] (원본 리스트는 변경되지 않음)