파이썬(Python) - reverse()와 reversed()

파워엘릭서·2024년 7월 9일

🐍Python

목록 보기
1/1
post-thumbnail

프로그래머스 '자연수 뒤집어 배열로 만들기' 문제를 풀었다. 분명 맞게 작성했는데 결과가 계속 null로 떠서 찾아보다가 reverse()의 특성을 잘 모르고 쓴 것이 문제임을 알게 되었다! reverse()reversed()의 차이에 대해 알아보려 한다.

🌀 reverse()와 reversed()

구분리스트.reverse()reversed(리스트)
사용 가능한 자료형리스트리스트, 튜플, 문자열 등
반환NONE반복가능한(iterable) 객체
원본 리스트순서 바뀜영향 X (별개의 리스트)

➿ reverse()

이 코드는 NONE이 출력된다. 왜 이럴까?

n = [1, 2, 3, 4]
turn = n.reverse()

print(turn)
--------------------
NONE

하지만 아래의 코드는 정상적으로 리스트가 뒤집혀서 출력된다.

n = [1, 2, 3, 4]
n.reverse()

print(n)  #원본과 동일한 리스트
--------------------
[4, 3, 2, 1]

이는 reverse()코드는 NONE을 반환하고, 리스트 자체의 순서를 반대로 바꿔주기 때문이다. 따라서 원본 리스트 n의 순서가 바뀌는 것이다.

➿ reversed()

이 코드는 reversed()를 사용하여 작성한 코드이다. 하지만 아래에는 에러코드가 출력된 것을 볼 수 있다.

n = [1, 2, 3, 4]
New = reversed(n)

print(New)
--------------------
<list_reverseiterator object at 0x00000265E47B5548>

reversed()코드는 반복가능한(iterable) 객체를 반환하기 때문에 이 역순을 사용하기 위해서는 다시 원하는 형태으로 반환해야 한다. 하지만 reverse()와는 달리 원본 리스트의 순서에는 영향이 없는 것을 확인할 수 있다.

n = [1, 2, 3, 4]
New = list(reversed(n))  #리스트로 받기
NNew = tuple

print(New)
print(NNew)
print(n)  #원본 리스트 출력
--------------------
[4, 3, 2, 1]
(4, 3, 2, 1)
[1, 2, 3, 4]  #원본 리스트에는 영향이 없다
profile
제로부터 시작하는 코딩생활

0개의 댓글