Библиотека строк Python не поддерживает встроенный метод reverse(), как это делают другие контейнеры python, такие как list, поэтому знание других методов обращения строки может оказаться полезным. В этой статье рассматриваются несколько способов достижения этого.
Используем циклы
# Python code to reverse a string
# using loop
def reverse(s):
str = ""
for i in s:
str = i + str
return str
s = "Pythonist"
print ("The original string is : ",end="")
print (s)
print ("The reversed string(using loops) is : ",end="")
print (reverse(s))
The original string is : Pythonist The reversed string(using loops) is : tsinohtyP
Объяснение: В приведенном выше коде мы вызываем функцию для обращения строки, которая повторяется для каждого элемента и интересным способом присоединяет каждый символ к началу, чтобы получить обратную строку.
Используем рекурсию
# Python code to reverse a string
# using recursion
def reverse(s):
if len(s) == 0:
return s
else:
return reverse(s[1:]) + s[0]
s = "Pythonist"
print ("The original string is : ",end="")
print (s)
print ("The reversed string(using recursion) is : ",end="")
print (reverse(s))
The original string is : Pythonist The reversed string(using recursion) is : tsinohtyP
Объяснение: В приведенном выше коде строка передается в качестве аргумента рекурсивной функции для обращения строки. В функции основное условие состоит в том, что если длина строки равна 0, строка возвращается. Если не равно 0, рекурсивно вызывается обратная функция, чтобы разрезать часть строки, оставив первый символ, и объединить первый символ с концом отрезанной строки.
Используем стек
# Python code to reverse a string
# using stack
# Function to create an empty stack. It
# initializes size of stack as 0
def createStack():
stack=[]
return stack
# Function to determine the size of the stack
def size(stack):
return len(stack)
# Stack is empty if the size is 0
def isEmpty(stack):
if size(stack) == 0:
return true
# Function to add an item to stack . It
# increases size by 1
def push(stack,item):
stack.append(item)
# Function to remove an item from stack.
# It decreases size by 1
def pop(stack):
if isEmpty(stack): return
return stack.pop()
# A stack based function to reverse a string
def reverse(string):
n = len(string)
# Create a empty stack
stack = createStack()
# Push all characters of string to stack
for i in range(0,n,1):
push(stack,string[i])
# Making the string empty since all
# characters are saved in stack
string=""
# Pop all characters of string and put
# them back to string
for i in range(0,n,1):
string+=pop(stack)
return string
# Driver code
s = "Pythonist"
print ("The original string is : ",end="")
print (s)
print ("The reversed string(using stack) is : ",end="")
print (reverse(s))
The original string is : Pythonist The reversed string(using stack) is : tsinohtyP
Объяснение: Создаем пустой стек. Один за другим символы строки помещаются в стек. Один за другим выталкиваются все символы из стека и собираются в строку.
Используем расширенный синтаксис слайсинга
# Python code to reverse a string
# using extended slice syntax
# Function to reverse a string
def reverse(string):
string = string[::-1]
return string
s = "Pythonist"
print ("The original string is : ",end="")
print (s)
print ("The reversed string(using extended slice syntax) is : ",end="")
print (reverse(s))
The original string is : Pythonist The reversed string(using extended slice syntax) is : tsinohtyP
Объяснение: Расширенный срез предлагает поместить поле «шаг» в срез [начало, конец, шаг], а пустое поле в качестве начала и конца указывает по умолчанию на 0, а с шагом в -1 срез соберет как раз перевернутую исходную строку.
Используем reversed
# Python code to reverse a string
# using reversed()
# Function to reverse a string
def reverse(string):
string = "".join(reversed(string))
return string
s = "Pythonist"
print("The original string is : ",end="")
print(s)
print("The reversed string(using reversed) is : ",end="")
print (reverse(s))
The original string is : Pythonist The reversed string(using reversed) is : tsinohtyP
Объяснение: Метод reversed() возвращает обратный итератор данной строки, а затем его элементы объединяются в пустую строку, разделенную с помощью join(). И так формируется обратная строка.

