본문 바로가기
프로그래밍/파이썬

Python 문자열을 반대로 출력하는 최고의 방법

by 민벗 2022. 10. 4.
반응형

 개발을 하다 보면 문자열을 뒤집어야 할 경우가 있다. 간편하게 for 문을 사용할 수 있지만, 들여 쓰기를 한번 더해야 한다는 점에서 코드 가독성을 떨어뜨릴 수 있다.

 

1. Slice 사용 -> 비추

def reverse_string(x: str) -> str:
    reversed_str = x[::-1]
    return reversed_str

 

 간단히 파이썬의 slice 기능을 사용하는 방법이 있다. slice의 경우 다른 프로그래밍 언어와 달리 파이썬에만 존재한다. 그러나 한번 익숙해지면 그만큼 편리한 기능이다.

 

 Slice의 경우 따로 메모리 공간을 사용하지 않고, 코드가 짧아지는 장점이 있다. 그러나 성능적으로는 for문과 차이가 없다. 이는 Slice 기능 자체가 기존의 변수를 복사하기 때문이다.

 

2. reversed 함수 사용 -> 권장

def reverse_string(x: str) -> str:
    reversed_list = reversed(x)
    reversed_str = "".join(reversed_list)
    return reversed_str

 

 다음은 reversed 함수다. reversed 함수를 사용할 경우 기존값을 복사하지 않는다. 문자열 변수를 reversed 한 객체를 출력한 결과 <reversed object>를 반환한다. 즉 복사와 반복문을 사용하지 않고 그저 iterator 객체를 만든 것으로 보인다.

 

 이는 성능적으로 중요한 이점을 가지고 간다. 실제로 테스트 결과 reversed 방법이 slice보다 대부분 빨랐다.

 

빨간색 : reversed, 파란색 : slice

 

결론

 아마 slice가 가독성 상으로 더 좋아서 많이 쓸거라 예상된다. 하지만, 이렇게 테스트해보니 reversed를 사용하지 않을경우 성능상 낭비가 된다. 이왕 개발 할거 reversed를 사용해서 더 좋은 성능을 내길 바란다.

 

 

참고한 글

 

Python - reversed() VS [::-1] , Which one is faster? - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

연습문제

 

Palindrome Number - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

반응형

댓글