Разворачиваем строку в Python (5 разных способов)

Библиотека строк 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(). И так формируется обратная строка.