여러 방법이 있지만 가장 효율적인 슬라이싱을 사용해주세요.
파이썬의 문자열을 뒤집는 방법 3가지를 코드와 시간을 통해 비교하고 어느 방법이 효율적인지 알아봅시다.
슬라이싱을 통해 뒤집습니다. 코드도 간단합니다.
s = "Hello World"
s = s[::-1]
print(s)
# dlroW olleH
길이 1억의 문자열을 뒤집는데 약 0.18초가 소요됩니다.
import time
# 1. 반복문 횟수 - 1억
max_val = 100000000
s = "a" * max_val
# 2. 시간 계산
start_time = time.time()
s = s[::-1]
end_time = time.time()
# 3. 시간 출력
print(end_time - start_time)
# 0.18599224090576172
s = "Hello World"
# rerversed 메소드는 문자열을 뒤집고 리스트를 반환합니다.
s = "".join(reversed(s))
print(s)
길이 1억인 문자열을 뒤집는데 약 2초가 소요됩니다.
import time
# 1. 반복문 횟수 - 1억
max_val = 100000000
s = "a" * max_val
# 2. 시간 계산
start_time = time.time()
s = "".join(reversed(s))
end_time = time.time()
# 3. 시간 출력
print(end_time - start_time)
# 2.231611967086792
rerversed 메소드로 받은 뒤집어진 리스트를 join을 사용해 문자열로 만들어줍니다.
s = "Hello World"
reversed_s = ""
# 원래 문자열을 빈 문자열의 앞에서 부터 더해서 뒤집습니다.
for c in s:
reversed_s = c + reversed_s
c = reversed_s
print(c)
# dlroW olleH
20분 동안 실행했는데 결과가 안나왔습니다. 하지 마세요.
import time
# 1. 반복문 횟수 - 1억
max_val = 100000000
s = "a" * max_val
# 2. 시간 계산
start_time = time.time()
reversed_s = ""
for c in s:
reversed_s = c + reversed_s
s = reversed_s
end_time = time.time()
# 3. 시간 출력
print(end_time - start_time)
# ....