파이썬 문자열에는 내장된 reverse() 함수가 없습니다. 그러나 파이썬에서 문자열을 뒤집는 다양한 방법이 있습니다.
1. 파이썬에서 문자열을 뒤집는 방법은?
문자열을 뒤집는 일반적인 방법 중 일부는 다음과 같습니다:
- 문자열의 역 복사본을 만들기 위해 슬라이싱 사용
- for 루프를 사용하여 문자를 역순으로 추가합니다
- while 루프를 사용하여 문자열 문자를 역순으로 반복하고 추가합니다
- string join() 함수와 reversed() 이터레이터 사용
- 문자열에서 리스트를 만든 다음 그것의
reverse()
함수를 호출합니다 - 재귀 사용
1.1) 슬라이싱을 사용하여 파이썬 문자열 뒤집기
def reverse_slicing(s):
return s[::-1]
input_str = 'ABç∂EF'
if __name__ == "__main__":
print('Reverse String using slicing =', reverse_slicing(input_str))
만약 위의 Python 스크립트를 실행하면 결과는 다음과 같을 것입니다:
Reverse String using slicing = FE∂çBA
1.2) For 루프를 사용하여 문자열 뒤집기
def reverse_for_loop(s):
s1 = ''
for c in s:
s1 = c + s1 # appending chars in reverse order
return s1
input_str = 'ABç∂EF'
if __name__ == "__main__":
print('Reverse String using for loop =', reverse_for_loop(input_str))
결과: For 루프를 사용하여 문자열 뒤집기 = FE∂çBA
1.3) While 루프를 사용하여 문자열 뒤집기
def reverse_while_loop(s):
s1 = ''
length = len(s) - 1
while length >= 0:
s1 = s1 + s[length]
length = length - 1
return s1
input_str = 'ABç∂EF'
if __name__ == "__main__":
print('Reverse String using while loop =', reverse_while_loop(input_str))
1.4) join() 및 reversed()를 사용하여 문자열 뒤집기
def reverse_join_reversed_iter(s):
s1 = ''.join(reversed(s))
return s1
1.5) 리스트 reverse()를 사용하여 Python 문자열 뒤집기
def reverse_list(s):
temp_list = list(s)
temp_list.reverse()
return ''.join(temp_list)
1.6) 재귀를 사용하여 Python 문자열 뒤집기
def reverse_recursion(s):
if len(s) == 0:
return s
else:
return reverse_recursion(s[1:]) + s[0]
2. 파이썬에서 문자열 뒤집는 최상의 방법
여러 알고리즘을 통해 문자열을 뒤집을 수 있습니다. 이미 여섯 가지를 살펴보았습니다. 그러나 문자열을 뒤집기 위해 어떤 것을 선택해야 할까요? timeit 모듈을 사용하여 이러한 함수들을 여러 번 실행하고 실행하는 데 필요한 평균 시간을 얻을 수 있습니다. 위의 모든 함수는 string_reverse.py
라는 파이썬 스크립트에 저장되어 있습니다. 나는 timeit 모듈을 사용하여 이러한 함수를 하나씩 1,00,000 번 실행하고 최상의 5회의 평균을 얻었습니다.
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_slicing("ABç∂EF"*10)'
100000 loops, best of 5: 0.449 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_list("ABç∂EF"*10)'
100000 loops, best of 5: 2.46 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_join_reversed_iter("ABç∂EF"*10)'
100000 loops, best of 5: 2.49 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_for_loop("ABç∂EF"*10)'
100000 loops, best of 5: 5.5 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_while_loop("ABç∂EF"*10)'
100000 loops, best of 5: 9.4 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_recursion("ABç∂EF"*10)'
100000 loops, best of 5: 24.3 usec per loop
아래 표는 최상의 알고리즘에서 알고리즘의 결과와 느린 정도를 제시합니다.
Algorithm | TimeIt Execution Time (Best of 5) | Slowness |
---|---|---|
Slicing | 0.449 usec | 1x |
List reverse() | 2.46 usec | 5.48x |
reversed() + join() | 2.49 usec | 5.55x |
for loop | 5.5 usec | 12.25x |
while loop | 9.4 usec | 20.94x |
Recursion | 24.3 usec | 54.12x |
3. 요약
파이썬에서 문자열을 뒤집기 위해 슬라이싱을 사용해야 합니다. 코드가 매우 간단하고 작으며 문자열을 뒤집기 위한 로직을 직접 작성할 필요가 없습니다. 또한 위의 테스트 실행에서 확인한 바와 같이 문자열을 뒤집는 가장 빠른 방법입니다.
당신은 우리의 GitHub 저장소에서 완전한 파이썬 스크립트와 더 많은 파이썬 예제를 확인할 수 있습니다.
4. 참고 자료
Source:
https://www.digitalocean.com/community/tutorials/python-reverse-string