← Все вопросы

Как развернуть строку задом наперёд в Python?

Задан 18 месяцев назад1.4к просмотров2 ответа
10

Нужно перевернуть строку — например, из 'привет' сделать 'тевирп'. В других языках для этого есть метод reverse, а в Python у строки его нет. Как развернуть строку наоборот самым коротким способом?

2 ответа

13
✓ Принятый ответ — помог автору

Самый питоничный способ — срез с шагом -1:

s = 'привет'
reversed_s = s[::-1]   # 'тевирп'

Запись [::-1] означает «весь диапазон, но шаг -1», то есть идём с конца к началу. Работает для строк, списков и кортежей. Это быстро и читается опытными питонистами сразу.

Почему нет метода .reverse(): строки в Python неизменяемы, их нельзя править на месте. Поэтому переворот всегда создаёт новую строку, а старая остаётся прежней.

Если срез кажется загадочным, есть явный вариант через reversed() и join:

reversed_s = ''.join(reversed(s))

reversed() возвращает итератор, а join склеивает символы обратно в строку.

Частая ошибка — попробовать s.reverse() (как у списка) и получить AttributeError. У строк такого метода нет именно из-за неизменяемости.

Важный нюанс: [::-1] переворачивает по символам. Для текста с эмодзи или сложными составными символами результат может выглядеть неожиданно, но для обычного русского/латинского текста всё корректно.

5

Если нужно развернуть не символы, а слова в предложении, срез не подойдёт — сначала разбейте по пробелам:

text = 'мама мыла раму'
print(' '.join(text.split()[::-1]))  # 'раму мыла мама'

То есть split() режет на слова, [::-1] переворачивает список слов, join склеивает обратно. Полезно различать «перевернуть буквы» и «перевернуть слова» — это разные задачи.

Ваш ответ

Войдите, чтобы ответить на вопрос.