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문 역순 배열
더보기
for i in range(0, N, -1)(X)- for i in range(N, 0, -1) (O)
- for i in range(N)[::-1] (O) #범위 연산자의 이용
🔔 개념요약
- 리스트.reverse는 리스트를 뒤집는다. return 값 無.
- reversed(리스트)는 뒤집어진 리스트의 값을 return.
→ reversed(리스트) 자체는 list_type이 아닌 list_reversiterator_type.
→ list(reversed(리스트)) 가 뒤집어진 list_type - 기존 리스트의 값 변경 없이, 뒤집어진 값만을 필요시 reversed 함수 활용 권장.
728x90
'Language > Python' 카테고리의 다른 글
| [문법] 리스트 값을 0으로 초기화하기 (0) | 2022.03.02 |
|---|---|
| [문법] 재귀 함수와 제한 (0) | 2022.03.02 |
| [문법] Set, List, Dictionary (작성 中) (0) | 2022.02.21 |
| [문법] List의 최빈값 출력하기 (0) | 2022.02.21 |
| [문법] 제너레이터(Generator) (0) | 2022.02.10 |