Глиф Учебники

Как перевернуть строку в Python

Справочник · Python · 1 минута чтения

Python
s = "Привет"
print(s[::-1])
Вывод
тевирП

[::-1] — срез всей строки с шагом −1, то есть с конца к началу. Это самый короткий и быстрый способ. Исходная строка не меняется: строки в Python неизменяемы, срез создаёт новую.

Другие способы

reversed выдаёт буквы в обратном порядке, а join собирает их обратно в строку:

Python
s = "Python"
print("".join(reversed(s)))
Вывод
nohtyP

В учебных задачах иногда просят обойтись без срезов — тогда строку собирают в цикле, ставя каждую букву в начало:

Python
s = "Python"
result = ""
for ch in s:
    result = ch + result
print(result)
Вывод
nohtyP

Проверка на палиндром

Палиндром читается одинаково в обе стороны. Чтобы не мешали большие буквы и пробелы, строку сначала приводят к нижнему регистру и убирают пробелы:

Python
phrase = input()
clean = phrase.lower().replace(" ", "")
if clean == clean[::-1]:
    print("палиндром")
else:
    print("не палиндром")
Ввод
А роза упала на лапу Азора
Вывод
палиндром

Если во фразе есть знаки препинания, их тоже нужно убрать — например, оставить только буквы: "".join(ch for ch in phrase.lower() if ch.isalpha()).

Слова в обратном порядке

Чтобы переставить не буквы, а слова, строку режут на слова, переворачивают список и склеивают:

Python
s = "Минск Брест Гродно"
print(" ".join(s.split()[::-1]))
Вывод
Гродно Брест Минск

Перевернуть число

Проще всего — через строку. Нули в начале при обратном переводе в число пропадают:

Python
n = 1200
print(int(str(n)[::-1]))
Вывод
21

В задачах на цифры числа часто требуют решение без строк — через остаток от деления. n % 10 даёт последнюю цифру, n // 10 отбрасывает её:

Python
n = 12345
result = 0
while n > 0:
    result = result * 10 + n % 10
    n //= 10
print(result)
Вывод
54321

Список

Для списков те же приёмы: a[::-1] возвращает перевёрнутую копию, а метод a.reverse() переворачивает сам список и возвращает None.

Python
a = [1, 2, 3]
print(a[::-1])
a.reverse()
print(a)
Вывод
[3, 2, 1]
[3, 2, 1]

У строк метода reverse нет: s.reverse() даёт ошибку AttributeError.