← Все вопросы
Как перевернуть список в Python (изменить порядок элементов)?
7
Хочу поменять порядок элементов списка на обратный: был [1,2,3], стало [3,2,1]. Нашёл и reverse(), и срез [::-1], и reversed() — и не понимаю, чем они отличаются и что когда использовать.
1 ответ
11
✓ Принятый ответ — помог автору
Есть три способа, и разница в том, меняют ли они исходный список и что возвращают.
list.reverse()— переворачивает на месте, ничего не возвращает (точнее,None):
a = [1, 2, 3]
a.reverse() # теперь a == [3, 2, 1]
- Срез
[::-1]— создаёт новый список, исходный не трогает:
a = [1, 2, 3]
b = a[::-1] # b == [3, 2, 1], a == [1, 2, 3]
reversed()— возвращает итератор, который надо обернуть вlist()или пройти циклом:
b = list(reversed(a))
Когда что:
- нужно поменять сам список →
reverse(); - нужна копия, оригинал сохранить →
[::-1]; - нужно просто пройти в обратном порядке циклом →
for x in reversed(a)(экономит память, не создаёт копию).
Главная ловушка — b = a.reverse(). Метод возвращает None, и в b окажется None, а не список. Это классическая ошибка. Если нужен результат в новой переменной — берите срез [::-1].
Ваш ответ
, чтобы ответить на вопрос.