본문 바로가기

Language/Python

[문법] 리스트 요소 반대로 나열하기

 

 List 반대로 나열하기

파이썬에서 List의 요소를 반대로 뒤집을 경우, reverse reversed라는 메소드를 사용한다. 차이를 알아보자.

 

 

 

 1. reverse​

list 타입에서 제공하는 함수로, 리스트 값을 반환하는 것이 아니라 변환시켜줌으로써 None을 return함.

리스트.reverse()                     # return: None

 

l = ['a', 'b', 'c']
l_reverse = l.reverse()

print(l_reverse)  
print(l) 

-------------------------------
# result

None
['c', 'b', 'a']

 

list 타입에서 제공하는 함수이기에, 다른 타입에서는 사용이 불가능하다. 

l = [' t', 'o', 'p'] # list타입
t = ('t', 'o', 'p') # tuple 타입
d = {'t': 1, 'o': 2, 'p': 3} # dict 타입
s = 'top' # string 타입
-------------------------------------------------------
l.reverse()  # list의 순서를 뒤집어줌
t.reverse()  # AttributeError: 'tuple' object has no attribute 'reverse'
d.reverse()  # AttributeError: 'dict' object has no attribute 'reverse'
s.reverse()  # AttributeError: 'str' object has no attribute 'reverse'

print(l[:])

---------------------------------------------
# result
['p', 'o', 't']

 

 

 

 

 2. reversed

reversed는 내장함수로, list에서 제공하는 함수가 아니다. 따라서 다양한 타입에서 사용 가능. (단, 순서 필요)

reversed(순서가_있는_변수명)                      # return: < object .....>

 

l = [' t', 'o', 'p'] # list타입
t = ('t', 'o', 'p') # tuple 타입
d = {'t': 1, 'o': 2, 'p': 3} # dict 타입
s = 'top' # string 타입

reversed(l)  # <listreverseiterator object at 0x101053c10>
reversed(t)  # <reversed object at 0x101053b50>
reversed(d)  # TypeError: argument to reversed() must be a sequence
reversed(s)  # <reversed object at 0x101053c10>

print(reversed(l))  
print(reversed(t))  
print(reversed(s))  
-------------------------------------------------
# result
<list_reverseiterator object at 0x0000019540D7A130>
<reversed object at 0x0000019540D7A130>
<reversed object at 0x0000019540D7A130>

 

허나 이의 리턴타입은 list_type이 아니라 list_reversiterator_type이다.

따라서 변환된 리스트의 값을 활용하고 싶다면 아래와 같이 print를 활용하여야 한다.

l = ['a', 'b', 'c']
t = ('a', 'b', 'c')
s = 'abc'

list_1 = list(reversed(l))  # ['c', 'b', 'a']
tuple_1 = tuple(reversed(t))  # ('c', 'b', 'a')
string = str(reversed(s))
string_list = list(reversed(s))
string_tuple = tuple(reversed(s))



print(list_1)
print(tuple_1)
print(string)
print(string_list)
print(string_tuple)

-------------------------------------------------
# result

['c', 'b', 'a']
('c', 'b', 'a')
<reversed object at 0x000002E2699BA130>
['c', 'b', 'a']
('c', 'b', 'a')

 

 

 

 

 3. reverse​ vs reversed

보통 reverse 메소드의 경우, 리스트의 순서를 반대로 변환하고 싶을 때 활용하고

reversed 메소드의 경우, 기존 리스트의 순서는 변환하지 않은 채 반대 나열 값만을 리턴하고자 할 때 활용한다.

 

 

  ※ [추가] for문 역순 배열

더보기
  1. for i in range(0, N, -1) (X)
  2. for i in range(N, 0, -1) (O)
  3. for i in range(N)[::-1] (O)                          #범위 연산자의 이용

 

 

 

 


 

🔔 개념요약

  1. 리스트.reverse는 리스트를 뒤집는다. return 값 無.
  2. reversed(리스트)는 뒤집어진 리스트의 값을 return.
    → reversed(리스트) 자체는 list_type이 아닌 list_reversiterator_type.
    → list(reversed(리스트)) 가 뒤집어진 list_type
  3. 기존 리스트의 값 변경 없이, 뒤집어진 값만을 필요시 reversed 함수 활용 권장.

 

728x90