Computer/공부정리

[Python]reversed()로 거꾸로된 리스트 출력

이르리의 공부일지 2023. 8. 13. 15:04

전 게시글에서 설명했듯이

reversed()는 python 내장함수로서

iterable(리스트, 튜플, 스트링 등)에 적용 시 iterable 내 요소를 거꾸로 출력해준다.

(내림차순 X, 거꾸로 O)

 

이제 reversed()를 이용해 반환값만 확인하는 것이 아니라

거꾸로 출력된 요소를 iterable에 담아서 출력하고 싶다면 어떻게 해야할까?

 

오늘은 그것을 알아보겠다!

 


우선 대표 iterable을 리스트로 잡고 보겠다.

데이터 타입을 확인해보면 리스트가 아니라

list_reverseiterator object이다.

 

참고.

dictionary 의 경우 dict_reversekeyiterator object,

tuple, string 의 경우 reversed object로 나온다.

 

즉 모두 '거꾸로된 객체'(이하 'r')로 나오지 원본 데이터 타입으로 나오지 않는다!

 

# list
li=[1, 3, 9, 7, 5]

print(reversed(li)) # list_reverseiterator object

print(type(reversed(li))) #list_reverseiterator


#dictionary
dict={'a': 1, 'b': 3, 'c': 9, 'd': 7, 'e': 5}

print(reversed(dict)) # dict_reversekeyiterator object

print(type(reversed(dict))) #dict_reversekeyiterator


#tuple
tu=(1, 3, 9, 7, 5)

print(reversed(tu)) # reversed object

print(type(reversed(tu))) #reversed


#string
string='13975'

print(reversed(string)) # reversed object

print(type(reversed(string))) #reversed

 

 

이 경우 원본 데이터 타입으로 데이터를 저장하려면 어떻게 해야할까?

# list
li=[1, 3, 9, 7, 5]

re_li=reversed(li) 

print(list(re_li)) #[5, 7, 9, 3, 1]


#dictionary
dic={'a': 1, 'b': 3, 'c': 9, 'd': 7, 'e': 5}

re_dic=reversed(dic)

print(dict(re_dic)) 
#ValueError: dictionary update sequence element #0 has length 1; 2 is required



#tuple
tu=(1, 3, 9, 7, 5)

re_tu=reversed(tu)

print(tuple(re_tu)) #(5, 7, 9, 3, 1)


#string
string='13975'

re_str=reversed(string)

print(str(re_str)) # <reversed object at 0x0000028B1447B970>

 

원하는 대로 나온 결과는 list, tuple만이다.

그렇담 dictionary랑 string은 어떻게 해줘야 할까?

 

#dictionary
dic={'a': 1, 'b': 3, 'c': 9, 'd': 7, 'e': 5}
re_dic_v=reversed(dic.values())
for v in re_dic_v:
    print(v, end="") # 57931, type: int


#string-string으로 출력
string='13975'
re_str=reversed(string)
for s in re_str:
    print(''.join(s), end="") # 57931, type: string
    
    
#string-list(또는 tuple)로 출력
string='13975'
re_str=list(reversed(string))
print(re_str) # ['5', '7', '9', '3', '1']



dictionary 쓸 때는 
dic.values()만 reversed() 하거나 

dic.keys()만 reversed() 해서

각각의 값을 출력하는 방법이 있고,

 

string 쓸 때는 

1) 반복문으로 출력해서 ''.join() 함수 쓰거나,

2) list나 tuple에 담아서 바로 출력해도 된다.