Python Обратная Строка: Руководство по Реверсированию Строк

В этом уроке вы научитесь переворачивать строку в Python. На самом деле, вы узнаете шесть различных способов достижения этой цели. Не волнуйтесь, вы не останетесь в недоумении, какой способ лучше. Вы узнаете, какой метод лучше всего подходит для удобства использования, читабельности и скорости.

Может показаться, что в Python должен быть метод string.reverse(). Однако, поскольку строки в Python неизменяемы, этого не происходит.

К концу этого руководства вы узнаете следующее:

  • Шесть различных способов перевернуть строку в Python

  • Когда какой подход использовать

Оглавление

Нарезка строк Python: лучший способ перевернуть строку

Лучший способ перевернуть строку в Python - использовать индексацию строк с шагом -1. Например, используя строку, такую как text='datagy', мы можем перевернуть её, используя backward = text[::-1].

Обратите внимание на то, что нам необходимо было присвоить строку переменной (даже если мы присваивали ее самой себе). Поскольку строки в Python неизменяемы, без переприсваивания строки мы бы просто выполняли итерацию по ней.

# Обратный порядок символов в строке Python: Индексирование строк
text = 'datagy'
backward = text[::-1]
print(backward)

# Возвращает: ygatad

Как работает этот метод? С помощью среза строки мы итерируем по каждому элементу строки в обратном порядке. По умолчанию срез работает в формате [start:stop:step]. Так как start и stop опущены, происходит индексация всей строки.

Пользовательская функция для удобства чтения при переворачивании строки Python

Создание собственной функции может сделать ваш код более понятным. Если вы хотите ясно показать, что ваша цель - инвертировать строку, создание собственной функции может сделать эту цель очевидной.

Давайте разберемся, как можно создать пользовательскую функцию на Python для переворачивания строки.

# Создание пользовательской функции для разворота строки
def reverse_string(text):
    if type(text) == str:
        return text[::-1]
    else:
        raise TypeError('Пожалуйста, передайте строку')

text = 'datagy'
backward = reverse_string(text)

print(backward)

# Возвращает: ygatad

Давайте разберемся, что мы делаем с помощью функции выше:

  1. Мы определили функцию reverse_string(text), которая принимает один аргумент. Мы назвали аргумент text, чтобы было понятно, что он должен принимать строку.

  2. В функции сначала проверяется тип аргумента. Если это строка, используется индексация строки для возвращения текста в обратном порядке.

  3. Если аргумент является строкой, вызывается исключение TypeError с пользовательским сообщением о том, что необходимо передать строку.

Почему этот метод хорош? Данный метод наглядно демонстрирует, как перевернуть строку. Это особенно полезно для начинающих, которым может потребоваться помощь в понимании кода.

Каков самый быстрый способ перевернуть строку в Python?

В следующих разделах мы исследуем различные способы реверсирования строки в Python. Эти методы включены прежде всего для полноты охвата. Прежде чем перейти к этим методам, давайте выясним, какой из методов является самым быстрым.

МетодВремя для строки из 1000 символов (мкс)

String Slicing

0.509

reversed()

15.1

While Loop

111

For Loop

131

Recursion

366

Мы видим, что срез строки - это, безусловно, самый быстрый способ её обращения. Фактически, он намного быстрее других вариантов (более чем в 700 раз быстрее самого медленного метода, рекурсии). Именно поэтому срез строки - это метод, который я бы рекомендовал больше всего.

Другие способы перевернуть строку в Python

В следующих разделах вы узнаете, как перевернуть строку, используя другие методы. Я включил эти методы сюда только для полноты изложения. Я бы не рекомендовал использовать указанные ниже методы на практике. Тем не менее, они полезны для знания и могут пригодиться на собеседованиях по программированию.

Реверс строки Python с помощью цикла For

Поскольку строки в Python являются итерируемыми объектами (как это демонстрируется на нашем примере использования индексации строк), мы можем проходить по ним, используя цикл for в Python.

Используя цикл for, мы можем перебирать каждый символ в строке и создавать перевернутую строку. Давайте посмотрим, как выглядит этот процесс:

# Разворачивание строки с помощью цикла for в Python
text = 'datagy'
reversed_string = ''

for character in text:
    reversed_string = character + reversed_string

print(reversed_string)

# Возвращает: ygatad

Давайте разберемся, как мы используем цикл for для инвертирования строки в Python:

  1. Мы инициализируем строку (text) и пустую строку (reversed_string)

  2. Мы затем перебираем каждый символ в строке

  3. Мы добавляем текущую перевернутую строку к символу цикла.

  4. Наконец, мы печатаем перевернутую строку

Если вам трудно представить, как это выглядит, давайте посмотрим, как выглядят все напечатанные утверждения:

# Визуализация того, как это выглядит
text = 'datagy'
reversed_string = ''

for character in text:
    reversed_string = character + reversed_string
    print(reversed_string)

# Возвращает:
# d
# ad
# tad
# atad
# gatad
# ygatad

Мы видим, что каждый символ доступен, и текущие перевернутые части добавляются в конец этой строки.

Реверсирование строки Python с помощью цикла while

Циклы while в Python - это методы неопределенной итерации, что означает, что они будут продолжаться до тех пор, пока не будет выполнено условие. Давайте посмотрим, как мы можем использовать цикл while для реверсирования строки в Python:

# Реверс строки с помощью цикла while
text = 'datagy'
reversed_string = ''
i = len(text) - 1

while i >= 0:
    reversed_string += text[i]
    i -= 1

print(reversed_string)

# Возвращает: ygatad

Этот пример выглядит немного сложнее, чем наш цикл for (и это действительно так!). Давайте посмотрим, что происходит за кулисами, чтобы понять, как работает этот подход:

  1. Мы инициализируем три переменные: text, которая содержит нашу строку, reversed_string, которая является пустой строкой, и i, которая равна длине строки.

  2. Затем мы создаем цикл while, который продолжает выполняться, пока значение i больше 0 (это означает, что еще остались символы).

  3. Используем оператор присваивания с добавлением += для поочередного добавления символов с конца строки.

  4. Наконец, мы отнимаем 1 от значения i, чтобы сдвинуться на один символ влево.

Переверните строку с помощью обратной функции Python

Python включает встроенную функцию reversed(), которая позволяет изменить порядок элементов в итерируемом объекте (например, в списке или строке) и возвращает объект с элементами в обратном порядке.

Мы можем использовать эту функцию вместе с методом .join() строки для возвращения строки в обратном порядке. Давайте посмотрим, как мы можем перевернуть строку, используя функцию reversed().

# Реверс строки с помощью reversed()
text = 'datagy'
reversed_string = ''.join(reversed(text))

print(reversed_string)
# Возвращает: ygatad

В этом коде происходит довольно много, так что давайте разберём его по частям:

  1. Мы создаем нашу строку в переменной text

  2. Затем мы передаём строку в функцию reversed()

  3. Наконец, мы объединяем объект обратно в строку, используя метод .join()

Это очень чистый метод, который хорошо работает. Особенно хорошо, что в него уже встроена обработка ошибок. Это означает, что если переданный объект не является итерируемым, будет вызвано исключение TypeError

Переверните строку Python с помощью рекурсии

Python рекурсия может показаться сложным концептом, но это отличное понятие, которое стоит иметь в виду для собеседований по программированию. Признаюсь, я включаю этот пример в основном ради забавы. Я действительно не могу представить себе ситуацию, когда мне когда-либо понадобится использовать этот метод вне собеседования.

Давайте взглянем на то, как выглядит наш рекурсивный метод, а затем погрузимся в изучение его работы. Рекурсия работает, создавая функцию, которая вызывает сама себя, пока не достигнет базового случая.

# Реверс строки в Python с помощью рекурсии
a_string = 'datagy'
def reverse_a_string(a_string):
    if len(a_string) == 1:
        return a_string
    return reverse_a_string(a_string[1:]) + a_string[:1]

reversed_string = reverse_a_string(a_string)
print(reversed_string)

# Возвращает: ygatad

В приведенном выше примере функция reverse_a_string() вызывает сама себя до тех пор, пока не будет достигнуто базовое условие (когда длина строки равна 1).

Этот метод значительно уступает по читабельности и является самым длинным. По этой причине я не рекомендую использовать этот подход, если только это абсолютно необходимо.

Заключение

В этом уроке вы научились использовать Python для переворачивания строки. Это важный навык, который нужно знать, особенно на собеседованиях для начинающих программистов. Вы узнали лучший метод достижения этой цели - индексацию строк, и как превратить это в очень понятную функцию, чтобы помочь читателям вашего кода. Вы также изучили некоторые альтернативные методы, включая использование циклов for и while, а также методы списка и рекурсию.

Чтобы узнать больше об индексации строк в Python, ознакомьтесь с официальной документацией здесь.

Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с ресурсами ниже:

  • Как перевернуть список Python (6 способов)

  • Python: перевернуть число (3 простых способа)

  • Python List sort(): подробное руководство по сортировке списков

Last updated