Python에서 .reverse()는 리스트(list)의 요소를 뒤집는 기능을 가진 메서드입니다. 하지만 몇 가지 중요한 특징이 있습니다.
.reverse()의 특징리스트 자체를 변경 (in-place)
.reverse()는 리스트의 순서를 뒤집지만 새로운 리스트를 반환하지 않고, 원본 리스트를 직접 수정합니다.
반환값은 None
새로운 리스트를 반환하지 않기 때문에, .reverse()를 사용한 결과를 변수에 할당하면 None이 저장됩니다.
numbers = [1, 2, 3, 4, 5]
numbers.reverse()
print(numbers) # [5, 4, 3, 2, 1]
.reverse()는 리스트 자체를 변경했으므로, numbers의 값이 뒤집혀 있습니다.
Nonenumbers = [1, 2, 3]
reversed_numbers = numbers.reverse()
print(reversed_numbers) # None
이처럼 .reverse()는 새로운 리스트를 반환하지 않기 때문에, 변수에 저장하면 None이 들어갑니다.
.reverse() vs [::-1]리스트를 뒤집는 또 다른 방법은 슬라이싱 [::-1]을 이용하는 것입니다.
numbers = [1, 2, 3, 4, 5]
reversed_numbers = numbers[::-1]
print(reversed_numbers) # [5, 4, 3, 2, 1]
print(numbers) # [1, 2, 3, 4, 5] (원본 유지)
🔹 [::-1]는 새로운 리스트를 반환하기 때문에, 원본 리스트는 변경되지 않습니다.
🔹 .reverse()는 리스트를 직접 수정하므로 원본 리스트가 변경됩니다.
.reversed()와의 차이점reversed() 함수는 반환값이 reversed object (이터레이터) 이므로 .reverse()와 다릅니다.
numbers = [1, 2, 3, 4, 5]
reversed_obj = reversed(numbers)
print(list(reversed_obj)) # [5, 4, 3, 2, 1]
print(numbers) # [1, 2, 3, 4, 5] (원본 유지)
✔ .reverse() → 원본 리스트 수정 (in-place)
✔ reversed() → 새로운 이터레이터 반환 (원본 변경 X)
.reverse()를 사용해야 할까?✅ 원본 리스트를 뒤집어야 할 때
✅ 새로운 리스트를 만들 필요가 없을 때
⚠️ 원본 리스트를 변경하고 싶지 않다면 [::-1] 또는 list(reversed()) 사용!
| 메서드 | 반환값 | 원본 리스트 변경 | 새로운 리스트 생성 |
|---|---|---|---|
.reverse() | None | O | X |
[::-1] | 리스트 | X | O |
reversed() | 이터레이터 | X | O |
.reverse()는 간단하지만 원본을 직접 변경하는 점을 주의해야 합니다! 🚀