Как развернуть строку задом наперёд в Python?
Нужно перевернуть строку — например, из 'привет' сделать 'тевирп'. В других языках для этого есть метод reverse, а в Python у строки его нет. Как развернуть строку наоборот самым коротким способом?
2 ответа
Самый питоничный способ — срез с шагом -1:
s = 'привет'
reversed_s = s[::-1] # 'тевирп'
Запись [::-1] означает «весь диапазон, но шаг -1», то есть идём с конца к началу. Работает для строк, списков и кортежей. Это быстро и читается опытными питонистами сразу.
Почему нет метода .reverse(): строки в Python неизменяемы, их нельзя править на месте. Поэтому переворот всегда создаёт новую строку, а старая остаётся прежней.
Если срез кажется загадочным, есть явный вариант через reversed() и join:
reversed_s = ''.join(reversed(s))
reversed() возвращает итератор, а join склеивает символы обратно в строку.
Частая ошибка — попробовать s.reverse() (как у списка) и получить AttributeError. У строк такого метода нет именно из-за неизменяемости.
Важный нюанс: [::-1] переворачивает по символам. Для текста с эмодзи или сложными составными символами результат может выглядеть неожиданно, но для обычного русского/латинского текста всё корректно.
Если нужно развернуть не символы, а слова в предложении, срез не подойдёт — сначала разбейте по пробелам:
text = 'мама мыла раму'
print(' '.join(text.split()[::-1])) # 'раму мыла мама'
То есть split() режет на слова, [::-1] переворачивает список слов, join склеивает обратно. Полезно различать «перевернуть буквы» и «перевернуть слова» — это разные задачи.