В этом руководстве показано вам все, что вам нужно знать, чтобы помочь вам овладеть необходимым Обратный () Способ наиболее фундаментальных контейнеров типа данных в языке программирования Python.
Определение и использование :
list.reverse () Переверняет порядок элементов в Список Отказ Если вы хотите создать новый список с обращенными элементами, используйте нарезку с отрицательным размером шага Список [:: - 1] Отказ
Вот краткий пример:
>>> lst = [1, 2, 3, 4] >>> lst.reverse() >>> lst [4, 3, 2, 1]
В первой строке примера вы создаете список lst Отказ Затем вы поменяете заказ элементов в списке и распечатайте его в оболочку.
Код головоломки: Вы также можете решить головоломку кода и отслеживать свои навыки Python в нашем интерактивном приложении Finxter.
Синтаксис : Вы можете вызвать этот метод на каждом объекте списка в Python. Вот синтаксис:
list.reverse ()
Аргументы: Обратный метод не принимает аргументов.
Возвращаемое значение: Метод list.reverse () имеет возврат ценности Нет Отказ Это меняет элементы списка (но не создает новый список). Таким образом, возвращаемое значение не требуется.
Статьи по Теме:
- Окончательное руководство по спискам Python
Вот ваш бесплатный PDF чит-лист, показывающий вас все методы списка Python на одной простой странице. Нажмите на изображение, чтобы загрузить файл PDF с высоким разрешением, распечатать его и опубликовать его в свою офисную стену:
Список Python Reverse () Сложность времени
Сложность времени из Обратный () Операция o (n) для списка с n элементами. Стандартная реализация Python Cpython «Прикоснутся к всему элементам в исходном списке, чтобы переместить их в другую позицию. Таким образом, момент сложности является линейным в количестве элементов списка.
Вы можете увидеть участок времени сложности Обратный () Метод растущего размера списка здесь:
На рисунке показано, как прошедшее время реверсирующих списков с растущим числом элементов растет линейным до количества элементов.
Если вы заинтересованы в коде, я использовал для генерации этого участка MATPLOTLIB, это он:
import matplotlib.pyplot as plt
import time
y = []
for i in [100000 * j for j in range(10,100)]:
lst = list(range(i))
t0 = time.time()
x = lst.reverse()
t1 = time.time()
y.append(t1-t0)
plt.plot(y)
plt.xlabel("List elements (10**5)")
plt.ylabel("Time (sec)")
plt.show()Список Python Reverse () на месте
Если вы позвоните list.reverse () Способ на любом объекте списка в Python он меняет элементы списка этот конкретный объект списка. Вы говорите, что обратный метод происходит на месте Отказ
Это распространенная ошибка многих начинающих Python. Они предполагают, что Обратный () Метод создает новый список с элементами в обращенном порядке. Это не так: Обратный () Метод изменяет только существующий объект списка.
Вы можете увидеть это в следующем примере:
>>> lst = [1, 2, 3] >>> lst.reverse() >>> lst [3, 2, 1]
В примере вы только перевернули существующий список lst Отказ Но вы не создали новый список!
Список Python Reverse () Нет
Возвращаемое значение list.reverse () Метод это Нет Отказ Почему? Потому что метод меняет список на месте. Это означает, что новый список не создан. Вместо этого метод модифицирует старый объект списка.
Вы видели пример этого в предыдущем разделе.
Обратный список списка Python без обратного ()
Вы также можете перевернуть список без использования метода Reverse (). Давайте посмотрим на следующую таблицу, которая показывает все альтернативы Reverse ():
| lst.reverse () | Переверняет порядок элементов списка LST на месте. |
| Список (обратный (LST)) | Встроенный обратный (LST) метод создает новый объект списка с элементами обратного списка. |
| lst [:: – 1] | Нарезка с негативной индексацией является наиболее лаконичным способом обращения по порядку списка. Это создает новый объект списка. |
| [lst [i] для i в пределах досягаемости (len (lst) -1, -1, -1)] | Просто для удовольствия – одноклассное решение для изменения списка с использованием понимания списка и функции отрицательного диапазона. |
Есть пятое решение, использующее рекурсию. Но это очень неэффективно, и вы не должны использовать его на практике. Если вы хотите узнать об этом в любом случае, читать дальше. Но не говори мне, что ты не предупредил!
Список Python обратный рекурсивный
Вы можете создать рекурсивную функцию, чтобы изменить любой список. Я сначала дам вам код и объясните это позже:
>>> reverse = lambda lst: reverse(lst[1:]) + [lst[0]] if lst else []
Давайте проверим, это делает то, что он должен делать (отменить список):
>>> reverse([1, 2, 3]) [3, 2, 1] >>> reverse(["Ann", 1, 42, 0]) [0, 42, 1, 'Ann'] >>> reverse([]) [] >>> reverse([1]) [1]
Хорошо, это работает!
Рекурсивное решение однонаправления использует несколько функций Python, которые вы должны понимать, прежде чем вы сможете полностью понять это полностью:
- Лямбда функция
лямбда х: yСоздает анонимную функцию с аргументомхи возвращаемое значениеyОтказ Вы можете прочитать подробный учебник по блоге Finxter. - Список конкатенации
[A, B, C] + [D]Создает новый список[A, B, C, D]Отказ Вы можете прочитать подробный учебник по блоге Finxter. - Нарезка
lst [Start: Stop]выкрой подпоследовательность из списка междуНачатьиСтопИндексы. Вы можете прочитать подробный учебник по блоге Finxter. - Тернарный оператор
X Если вы еще ZВозвращает значениехЕслиyэтоПравдаОтказ Во всех других случаях он возвращает значениеzОтказ Вы можете прочитать подробный учебник по блоге Finxter.
Фу! Довольно некоторая информация для переваривания! Но это не все. Если вы поняли все вышеперечисленное, вам также нужно понимать рекурсию. Это слишком много, чтобы учить в одном абзаце, поэтому я отправлю вас в свою статью в блоге о рекурсии.
Я скажу только так: чтобы понять рекурсию, вы сначала должны понимать рекурсию! 😉.
Список Python обратный ломтик
Нарезка – самый простой способ отменить список.
Чтобы изменить список lst Вы просто используете операцию нарезки lst [:: - 1] С умолчанию Начать и Стоп Индексы (не даны) и отрицательный размер шага -1 (дано).
Есть только один случай, когда вы не должны использовать Slicing, чтобы изменить список, и это если вы не хотите создавать новый список. В этом случае придерживайтесь lst.reverse () Метод, который переводит список на месте.
Вот пример нарезки, чтобы изменить данный список:
>>> friends = ["Ann", "Carsten", "Bob", "Alice"] >>> r_friends = friends[::-1] >>> friends ['Ann', 'Carsten', 'Bob', 'Alice'] >>> r_friends ['Alice', 'Bob', 'Carsten', 'Ann']
Вы видите, что два списка друзья и R_friends Независимые объекты в памяти, поскольку операция нарезки создает новый список.
Статьи по Теме:
- Введение в нарезку в Python
Список Python обратная копия
Есть два способа скопировать список и обратный порядок его элементов:
- Используйте нарезку
Список [:: - 1], или же - Позвоните в
Перевернутый (список)Способ и преобразовать результат в список, используяСписок (...)конструктор.
Вот как в действии:
>>> lst_1 = ['Alice', 'Bob', 'Ann'] >>> lst_2 = lst_1[::-1] >>> lst_3 = list(reversed(lst_1)) >>> lst_1 ['Alice', 'Bob', 'Ann'] >>> lst_2 ['Ann', 'Bob', 'Alice'] >>> lst_3 ['Ann', 'Bob', 'Alice']
Список Python Частичное обратное
Частично отменить список lst Используйте нарезку с отрицательным размером шага: lst [Старт: Стоп: -1] Отказ Значения запуска и остановки определяют часть списка, который будет изменен, и размер шага -1 означает, что вы проходите через список в обращенном порядке.
Вот пример некоторых частичных разворотов списка:
>>> lst = ['a', 'b', 'c', 'd', 'e'] >>> lst[5:2:-1] ['e', 'd'] >>> lst[:1:-1] ['e', 'd', 'c'] >>> lst[3:2:-1] ['d']
Все эти нарезные операции обратились от подпоследовательности исходного списка. Обратите внимание, что Начать Индекс должен быть больше или равен, чем Стоп Индекс, потому что вы проходите список в отрицательном порядке (ну, если вы не хотите иметь пустой объект среза).
Появление списка Python обратного списка
Вы можете изменить список с мощным методом понимания списка Python. (Хотя я не могу представить сценарий, где это действительно имеет смысл.)
Связанная статья:
- Введение в список в списке
Понимание списка является компактным способом создания списков. Простая формула [экспрессия + контекст].
- Выражение : Что делать с элементом каждого списка?
- Контекст : Каков элементы списка выбрать? Он состоит из произвольного количества для и если утверждения.
Например, выражение [X для X в диапазоне (3)] Создает список [0, 1, 2] Отказ
Вот как вы будете использовать список по поводу понимания списка:
[lst[i] for i in range(len(lst)-1,-1,-1)]
Вы проходите все индексы в отрицательном порядке, начиная с индекса последнего списка ЛЕН (LST) -1 и окончание в первом индексе списка 0. Обратите внимание, что индекс остановки не включен в последовательность индекса, поэтому я использовал значение -1 в качестве индекса остановки для Диапазон () Встроенная функция.
Список Python Reverse () VS обратный ()
В чем разница между методом list.reverse () и встроенная функция Перевернутый (список) ?
list.reverse ()Изменяет существующий список на месте и переворачивает порядок элементов в этом объекте списка. Новый объект списка не создан.Перевернутый (список)Создает новый намек на изменение порядка элементов оригиналаСписокОтказ
Таким образом, вы должны использовать первое, если вы не хотите создавать новый список и последний, если вы хотите создать новую, не изменяя существующий список.
Пример следующий:
>>> lst_1 = [1, 2, 3] >>> lst_1.reverse() >>> lst_1 [3, 2, 1] >>> reversed(lst_1)
Выход не очень интуитивно понятен, но это только означает, что обратный () Функция возвращает цельюмаемого объекта.
Питонский список Глубокие обратные
Что, если вы хотите не только поменять список, но запустить глубокую возможность, где все вложенные списки также обращаются в рекурсивную рекурсию?
Вот как вы можете сделать это:
def deep_reverse(lst):
''' Reverses a nested list in place'''
# Reverse top-level list
lst.reverse()
# Recursively reverse all nested lists
for element in lst:
if isinstance(element, list):
deep_reverse(element)
lst = [1, 2, 3, [4, 5, 6]]
deep_reverse(lst)
print(lst)Это генерирует выход:
# OUTPUT: [[6, 5, 4], 3, 2, 1]
Не только список первого уровня полностью обращается, но и список второго уровня. Код слабо вдохновлен от Эта статья Отказ
Список Python обратный перечень
Перечислять (список) Встроенная функция Возвращает список кортежей с первым значением кортежного кортежа, являющегося индексом списка, а второе значение кортежа, являющегося элементом списка.
Вы можете отменить порядок перечисленных кортежей, укладывая вместе перечислять () Функция и list.reverse () Способ следующим образом:
>>> for i, el in enumerate(list(reversed([1, 2, 3]))): print(i, el) 0 3 1 2 2 1
Таким образом, вы впервые обратный список, который создает итератор. Затем вы преобразуете его в список. Результат может быть перечислен.
Если вы хотите также поменять заказ индексов, просто переключите порядок обеих функций:
>>> for i, el in reversed(list(enumerate([1, 2, 3]))): print(i, el) 2 3 1 2 0 1
Первым перечислением вы рассчитываете индексы на основе исходного списка. Затем вы поменяете их во внешнюю функцию.
Список Python обратный итератор
Перевернутый (список) Метод возвращает итератор, а не новый список. Это другое: итератор более эффективен, чем список. Вы можете легко преобразовать объект iTerator в список, используя Список (...) Встроенная функция.
Вот пример:
>>> reversed([1, 2, 3])>>> for i in reversed([1, 2, 3]): print(i) 3 2 1
Объект iTerator не выглядит красиво в оболочке, но это более эффективный способ повторять для последовательности значений, чем использование списков. Почему? Потому что списки должны поддерживать все значения в памяти. Итераторы не.
Список Python обратная сортировка
Вы хотите сортировать список в порядке убывания? Используйте Reverse = True Аргумент отсортировано () метод. Вот пример:
>>> sorted([42, 1, 99]) [1, 42, 99] >>> sorted([42, 1, 99], reverse=True) [99, 42, 1]
Индекс списка Python Reverse ()
Вместо того, чтобы просто использовать индексы положительного списка, вы также можете использовать обратную индексацию в списках Python. Отрицательный целочисленный индекс -1 обращается к последнему элементу. Отрицательный целочисленный индекс -2 обращается к второму последнему элементу и так далее. Вот пример:
>>> lst = ["Alice", "Bob", "Ann"] >>> lst[-1] 'Ann' >>> lst[-2] 'Bob' >>> lst[-3] 'Alice'
Обратный диапазон списка Python ()
Хотите ли вы повторить ряд целочисленных ценностей в обратном порядке? Скажем, вы хотите повторить количество от 10 до 0 в обратном порядке: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0. Вы можете просто добиться этого, указав Начать , Стоп и шаг Аргументы Диапазон (запуск, остановка, шаг) Метод:
>>> for i in range(10, -1, -1): print(i) 10 9 8 7 6 5 4 3 2 1 0
Обратите внимание, что Начать Аргумент включен в ассортимент, но Стоп Аргумент не.
Список Python Reverse () не работает
Что если Обратный () Метод не работает? Скорее всего, вы предполагаете list.reverse () Метод имеет возвращаемое значение, которое является обратным списком. Это не тот случай! list.reverse () Метод возвращает Нет Потому что это меняет Список на месте. Это не возвращает новый перевернутый список.
Вот пример того, что вы, вероятно, делаете:
>>> lst = [1, 2, 3] >>> print(lst) [1, 2, 3] >>> print(lst.reverse()) None
Если вы действительно хотите иметь новый список с элементами в обратном порядке, используйте встроенный Python Обратный (список) Метод:
>>> print(list(reversed([1, 2, 3]))) [3, 2, 1]
обратный () Метод переворачивает список и возвращает перевернутый список в качестве объекта iTerator. Вам необходимо сначала преобразовать его в список, прежде чем печатать его в оболочку (и получать значимый вывод).
Python обратный список numpy
Обратить вспять Numpy Array (или даже список Python), вы можете просто использовать нарезку с отрицательным размером шага А [:: - 1] Отказ Вот пример:
>>> import numpy as np >>> a = np.array([1, 2, 3]) >>> a[::-1] array([3, 2, 1])
Список Python Reverse () Безопасность резьбы
У вас есть несколько потоков, которые одновременно получают доступ к вашему списку? Тогда вы должны быть уверены, что операции списка (например, Reverse () ) на самом деле резьба безопасна Отказ
Другими словами: вы можете позвонить в Обратный () Операция в двух потоках в том же списке одновременно? (И вы можете быть уверены, что результат является значимым?)
Ответ да (если вы используете Mokef Cpython внедрение). Причина – Питона Блокировка глобального интерпретатора Это гарантирует, что поток, работающий в данный момент в этом коде, сначала завершит текущую базовую операцию Python, как определено реализацией CPYPHON. Только если оно завершится с помощью этой операции, сможет получить следующий поток для доступа к вычислительному ресурсу. Это обеспечивается сложной схемой блокировки в результате реализации CPYPHON.
Единственное, что вам нужно знать, состоит в том, что каждая основная операция в реализации CPYPHON является атомный Отказ Он выполнен полностью и сразу, прежде чем любой другой поток имеет возможность запустить на одном виртуальном двигателе. Поэтому нет условий расы. Примером для такого состояния гонки будет следующее: Первый поток считывает значение из списка, вторые потоки перезаписывают значение, и первая тема перезаписывает значение снова недействительным в операции второго потока.
Все операции Cpython являются потоковыми безопасными. Но если вы объединяете эти операции на функции более высокого уровня, это не в целом без резьбы, поскольку они состоят из многих (возможно, чередующихся) операций.
Куда пойти отсюда?
То list.reverse () Метод переворачивает порядок элементов списка.
Вы узнали INS и ауты этого важного способа списка Python.
Если вы продолжаете бороться с теми основными командами Python, и вы чувствуете застрявшие в своем прогрессе обучения, у меня есть что-то для вас: Python One-listers (Amazon Link).
В книге я дам вам тщательный обзор темы критических компьютерных наук, таких как машинное обучение, регулярное выражение, наука о данных, Numpy и Python Basics – все в одной линейке кода Python!
Получите книгу от Amazon!
Официальная книга Описание: Python One-Listers покажет читателям, как выполнить полезные задачи с одной строкой кода Python. Следуя краткому переподготовку Python, книга охватывает важные продвинутые темы, такие как нарезка, понимание списка, вещание, функции лямбда, алгоритмы, регулярные выражения, нейронные сети, логистические регрессии и др .. Каждая из 50 секций книг вводит проблему для решения, проходит читателя через навыки, необходимые для решения этой проблемы, затем предоставляет краткое однонаправленное решение Python с подробным объяснением.
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.