주어진 문자열을 내림차순으로 반환하는 코딩 테스트 문제를 푸는 도중 reverse()와 sort() 사용법이 헷갈려서 정리해둔다.
sort() vs sorted()
공부하다가 제일 헷갈렸던 부분이다.
python
# sort() - 원본을 바꿔버림
arr = [3, 1, 2]
arr.sort()
print(arr) # [1, 2, 3]
# 반환값이 None이라 이렇게 쓰면 안됨!
result = arr.sort()
print(result) # None
python
# sorted() - 원본은 그대로, 새 리스트 반환
arr = [3, 1, 2]
result = sorted(arr)
print(arr) # [3, 1, 2] 그대로
print(result) # [1, 2, 3]
문자열은 sort()를 쓰면 AttributeError가 나서 sorted()만 써야 한다.
python
s = "Zbcdefg"
s.sort() # AttributeError!
sorted(s) # 가능
reverse=True
sort(), sorted() 둘 다 옵션으로 넣으면 내림차순 정렬된다.
python
arr = [3, 1, 2]
sorted(arr, reverse=True) # [3, 2, 1]
문자열 내림차순 정렬할 때 이렇게 썼다.
python
s = "Zbcdefg"
''.join(sorted(s, reverse=True)) # 'gfedcbZ'
대문자가 소문자보다 작게 정렬되는 이유는 아스키 코드 때문이다. A=65, Z=90인데 a=97, z=122라서 숫자가 작은 대문자가 앞으로 간다.
reverse() vs reversed()
sort vs sorted랑 똑같은 관계다.
python
# reverse() - 원본 변경, 반환값 None
arr = [1, 2, 3]
arr.reverse()
print(arr) # [3, 2, 1]
python
# reversed() - 원본 유지, 이터레이터 반환
arr = [1, 2, 3]
result = list(reversed(arr))
print(arr) # [1, 2, 3] 그대로
print(result) # [3, 2, 1]
정렬이랑 뒤집기는 다르다
python
arr = [3, 1, 2]
sorted(arr, reverse=True) # [3, 2, 1] 크기순 정렬
list(reversed(arr)) # [2, 1, 3] 순서만 뒤집기
헷갈리지 말자
python
# 이렇게 쓰면 None 나옴 주의!
result = arr.sort()
result = arr.reverse()
# 이렇게 써야 함
arr.sort()
result = arr
# 또는
result = sorted(arr)
result = list(reversed(arr))
'Python' 카테고리의 다른 글
| [Python] 성능 병목을 찾는 방법 '프로파일링' (0) | 2026.06.28 |
|---|---|
| [Python] Selenium에서의 innerHTML, innerText, textContent 차이점 (0) | 2026.03.18 |
| [Python] 정규표현식 (0) | 2026.03.13 |
| [Python] pytest를 이용한 테스트 코드 작성법 (0) | 2026.03.11 |
| [Python] json.dumps() 사용법, 사용이유 (1) | 2026.03.10 |