Строки

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

fakeshluck

Recent Posts

10 удалённых Python-вакансий

Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…

6 месяцев ago

Где искать Python-вакансии в 2026 году: зачем на Talanto.work появился отдельный сценарий поиска

Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…

6 месяцев ago

Срезы в Python со всеми подробностями

Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…

8 месяцев ago

Возведение в степень в Python: полное руководство

В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…

9 месяцев ago

Как удалить дубликаты из списка Python?

Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…

9 месяцев ago

Виртуальный (shared) хостинг от SpaceWeb: технический обзор

Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…

11 месяцев ago