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