[Python] reverse, reversed 차이

heechan chae·2021년 6월 3일
1

Python

목록 보기
1/1

리스트 뒤집기

reverse와 reversed는 둘다 리스트안의 요소를 뒤집는 기능을 가지고 있는 내장 함수이다.
먼저 reverse와 reversed의 사용법에 대해 알아보겠다.

reverse

reverse는 쉽게 말해 리스트 안에 있는 요소들을 뒤집어서 다시 저장시켜 놓는 역할을 한다.

my_list = [1, 2, 3, 4, 5]
 
my_list.reverse()
 
print(my_list)

이런 코드가 있다고 할 때, 결과는 무엇일까.

[5, 4, 3, 2, 1]

결과는 예상대로 뒤집어 져서 나오게 된다.
따라서 my_list의 값은 현재 [1, 2, 3, 4, 5]가 아닌 [5, 4, 3, 2, 1]이다.

reversed

reversed도 reverse 함수와 같이 리스트를 뒤집는 기능을 하는 함수이다.
그럼 다음과 같은 코드의 결과는 어떻게 나올까.

my_list = [1, 2, 3, 4, 5]
 
your_list = reversed(my_list)
 
print(your_list)

예상대로라면 아마 이전 reverse와 같이 나와야 겠지만 결과는 다음과 같다.

<list_reverseiterator object at 0x0000014E1C76EFD0>

your_list의 type이 예상한대로 list type이 아닌 list_reversiterator type인것이다.
그래서 원하는 값을 출력하기 위해서는 다음과 같은 코드를 사용해야 한다.

my_list = [1, 2, 3, 4, 5]
 
your_list = reversed(my_list)
 
print(list(your_list))

이렇게 되면 원하는 결과인

[5, 4, 3, 2, 1]

이 출력되게 된다.

이렇게 불편하게 만든 이유가 궁금했다. 그래서 찾아보니 reversed의 쓰임은 따로 있던 것 같다.

my_list = [1, 2, 3, 4, 5]
 
for count in my_list.reverse():
    print(count)

뒤집어진 리스트를 사용해 for문을 사용하기 위해 위와같이 사용한다면 이런 에러가 뜬다.

TypeError: 'NoneType' object is not iterable

reverse 함수는 리스트를 뒤집어 주기만 할 뿐, 리턴 값이 없기 때문에 이런 일이 발생하게 된다. 따라서 기존 리스트의 값 변경 없이 리턴 값 만을 필요로 할 때는 reversed 함수를 사용해야겠다.

요약

  1. reverse는 리스트를 뒤집는다. return 값 없음
  2. reversed는 뒤집어진 리스트의 값을 return해준다.

0개의 댓글