← Все вопросы

Как перевернуть список в Python (изменить порядок элементов)?

Задан 6 месяцев назад1.2к просмотров1 ответ
7

Хочу поменять порядок элементов списка на обратный: был [1,2,3], стало [3,2,1]. Нашёл и reverse(), и срез [::-1], и reversed() — и не понимаю, чем они отличаются и что когда использовать.

1 ответ

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

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

  1. list.reverse() — переворачивает на месте, ничего не возвращает (точнее, None):
a = [1, 2, 3]
a.reverse()      # теперь a == [3, 2, 1]
  1. Срез [::-1] — создаёт новый список, исходный не трогает:
a = [1, 2, 3]
b = a[::-1]      # b == [3, 2, 1], a == [1, 2, 3]
  1. reversed() — возвращает итератор, который надо обернуть в list() или пройти циклом:
b = list(reversed(a))

Когда что:

  • нужно поменять сам список → reverse();
  • нужна копия, оригинал сохранить → [::-1];
  • нужно просто пройти в обратном порядке циклом → for x in reversed(a) (экономит память, не создаёт копию).

Главная ловушка — b = a.reverse(). Метод возвращает None, и в b окажется None, а не список. Это классическая ошибка. Если нужен результат в новой переменной — берите срез [::-1].

Ваш ответ

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