(python) .sort() 와 sorted() 차이

2023. 4. 21. 15:42학습/python

1.

.sort()
리스트 객체에 대해 호출되며, 해당 리스트를 직접 정렬합니다 (즉, 원본 리스트를 변경합니다).
원본 리스트를 수정하므로, 원본 리스트가 필요하지 않은 경우에 사용하기 적합합니다.
반환 값이 없습니다 (None을 반환). 대신 원본 리스트가 변경됩니다.
.sort()는 리스트 객체에서만 사용할 수 있습니다.

 

numbers = [3, 1, 4, 1, 5, 9]
numbers.sort()
print(numbers)  # 출력: [1, 1, 3, 4, 5, 9]

 

2. sorted() 함수

리스트 외에도 정렬이 가능한 모든 이터러블 객체(예: 튜플, 세트, 문자열 등)에 대해 사용할 수 있습니다.
원본 객체를 수정하지 않고, 새로 정렬된 리스트를 반환합니다.
원본 객체를 유지해야 하는 경우에 사용하기 적합합니다.
파이썬 내장 함수로, 이터러블 객체에 대해 사용할 수 있습니다.

 

numbers = [3, 1, 4, 1, 5, 9]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 출력: [1, 1, 3, 4, 5, 9]
print(numbers)  # 출력: [3, 1, 4, 1, 5, 9] (원본 리스트는 변경되지 않음)

 

정리

sort()는 원본 리스트를 변경하며, 반환 값이 없고 리스트 객체에서만 사용할 수 있습니다. 

반면 sorted()는 원본 객체를 변경하지 않고 정렬된 새 리스트를 반환하며, 이터러블 객체에 대해 사용할 수 있습니다.

원본 데이터를 유지하거나 다양한 이터러블 객체를 정렬하려면 sorted()를 사용하고, 원본 데이터를 수정해도 상관없고 리스트만 정렬하려면 .sort()를 사용한다.

 

 

cf. 비슷한 관계의 메소드/함수 들.

 

1. reversed()와 list.reverse():

reversed(): 이터러블 객체를 입력으로 받아, 순서가 반대인 새로운 이터레이터를 반환합니다.

numbers = [1, 2, 3, 4, 5]
reversed_numbers = reversed(numbers)
print(list(reversed_numbers))  # 출력: [5, 4, 3, 2, 1]

list.reverse(): 리스트 객체에 대해 호출되며, 해당 리스트의 순서를 역순으로 변경합니다 (원본 리스트를 변경).

numbers = [1, 2, 3, 4, 5]
numbers.reverse()
print(numbers)  # 출력: [5, 4, 3, 2, 1]

 

2. str.upper()와 str.lower():

str.upper(): 문자열 객체에 대해 호출되며, 모든 문자를 대문자로 변환한 새로운 문자열을 반환합니다.

text = "Hello, World!"
upper_text = text.upper()
print(upper_text)  # 출력: "HELLO, WORLD!"

str.lower(): 문자열 객체에 대해 호출되며, 모든 문자를 소문자로 변환한 새로운 문자열을 반환합니다.

text = "Hello, World!"
lower_text = text.lower()
print(lower_text)  # 출력: "hello, world!"

 

위의 예에서 처럼, 이러한 쌍들은 각각 원본 객체를 변경하거나 변경하지 않는 방식으로 동작합니다. 

원본 데이터를 유지하고 새로운 객체를 반환하는 함수를 사용할지, 원본 데이터를 변경하는 메소드를 사용할지는 작업의 목적과 요구 사항에 따라 결정하자!

 

728x90