[python] 문자열 거꾸로 출력하기 [::-1]

- 2 mins

문자열 거꾸로 출력하기

‘abcde’ 라는 문자열을 거꾸로 출력해보자.

즉, ‘edcba’ 라는 출력을 원한다.

무수히 많은 방법이 있겠지만, 몇 가지만 살펴보자.

일단 단순히 for문을 통해 해결하는 방법이 있을것이다.

s = 'abcde'
s_reverse = ''  # 기존 문자열을 역순으로 담아줄 빈 문자열 선언
for char in s:
    s_reverse = char + s_reverse

print(s_reverse)  # edcba

s_reverse라는 빈 문자열을 선언하고,

기존 문자열에서 문자를 차례대로 가져와 앞뒤 순서를 바꾸어주었다.


이번엔 파이썬에서 제공하는 함수를 사용해보자.

우선 다음과 같이 reverse를 활용하는 방법이 있을것이다.

s = 'abcde'
s_list = list(s)  # reverse 함수를 사용하기 위해 문자열을 list로 치환
s_list.reverse()  # reverse 함수를 사용해 문자열 리스트를 거꾸로 뒤집음

print(''.join(s_list))  # 거꾸로 뒤집어진 리스트를 연결해서 출력

정상적으로 동작하지만 개인적으로 뭔가 깔끔하지 못한 느낌이 든다.

이번엔 reversed를 활용해보자.

s = 'abcde'
print(''.join(reversed(s)))  # 'edcba'

reversed는 reverse와는 달리 문자열에도 바로 적용이 가능하므로, (reverse는 list에만 사용 가능)

reversed(s)를 통해 문자열을 거꾸로 뒤집은 후 join으로 연결해 바로 출력해주었다.


한 줄로 끝나버렸으니 여기서 더 단순화할 수 없을 것처럼 보인다.

하지만 파이썬에선 이런것도 가능하다.

s = 'abcde'
print(s[::-1])  # 'edcba'

문자열을 [::-1] 이라는 인덱스로 호출하면,

아주 단순하게 해당 문자열을 뒤집은 결과를 반환한다.

만약 [3:0:-1] 이라는 인덱스로 호출하면,

3번 인덱스부터 1번 인덱스까지(0번 까지가 아님) 역순으로 출력해준다.

s = 'abcde'
print(s[3:0:-1])  # dcb

[3::-1] 과 같이 출력하면 3번 인덱스부터 0번 인덱스까지 역순으로 출력해준다.

s = 'abcde'
print(s[3::-1])  # dcba

[4::-1] 은 4번 인덱스부터 0번 인덱스까지 역순으로 출력해주는데,

이 때 4번 인덱스가 마지막 인덱스라면 생략할 수 있다.

s = 'abcde'
print(s[4::-1])  # edcba
print(s[::-1])  # edcba

그래서 결과적으로 [::-1] 인덱스를 주면 전체 문자열을 역순으로 출력해주는 것이다.

문자열 뿐 아니라 리스트나 튜플에도 적용 가능하다.

l = ['a', 'b', 'c', 'd', 'e']
print(l[::-1])  # ['e', 'd', 'c', 'b', 'a']

t = ('a', 'b', 'c', 'd', 'e')
print(t[::-1])  # ('e', 'd', 'c', 'b', 'a')



코딩장이

코딩장이

-장이: [접사] ‘그것과 관련된 기술을 가진 사람’의 뜻을 더하는 접미사.

rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora