웹사이트 검색

Python Reverse String - 5가지 방법과 최고의 방법


Python String에는 내장된 reverse() 함수가 없습니다. 그러나 Python에서 문자열을 뒤집는 다양한 방법이 있습니다.

1. 파이썬에서 문자열을 뒤집는 방법?

문자열을 뒤집는 몇 가지 일반적인 방법은 다음과 같습니다.

  • 슬라이싱을 사용하여 문자열의 역복사본을 만듭니다.
  • for 루프 사용 및 역순으로 문자 추가
  • while 루프를 사용하여 문자열 문자를 역순으로 반복하고 추가합니다.
  • reversed() 반복자 사용
  • 문자열에서 목록을 만든 다음 reverse() 함수 호출
  • 재귀 사용

1.1) 슬라이싱을 사용한 Python Reverse String

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) List reverse()를 사용한 파이썬 리버스 문자열

def reverse_list(s):
    temp_list = list(s)
    temp_list.reverse()
    return ''.join(temp_list)

1.6) 재귀를 사용하는 Python Reverse String

def reverse_recursion(s):
    if len(s) == 0:
        return s
    else:
        return reverse_recursion(s[1:]) + s[0]

2. Python에서 문자열을 뒤집는 가장 좋은 방법

여러 알고리즘을 통해 문자열을 뒤집을 수 있습니다. 우리는 이미 6개를 보았습니다. 그러나 문자열을 뒤집기 위해 어느 것을 선택해야 합니까? 우리는 timeit 모듈을 사용할 수 있고 최고 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. 요약

Python에서 문자열을 반전하려면 슬라이싱을 사용해야 합니다. 그 코드는 매우 간단하고 작으며 문자열을 뒤집기 위해 자체 논리를 작성할 필요가 없습니다. 또한 위의 테스트 실행에서 식별된 대로 문자열을 뒤집는 가장 빠른 방법입니다.

GitHub 리포지토리에서 전체 Python 스크립트와 더 많은 Python 예제를 확인할 수 있습니다.

4. 참고문헌

  • reversed() API 문서
  • str.join() API 문서