В этом руководстве показано вам все, что вам нужно знать, чтобы помочь вам овладеть необходимым POP ()
Способ наиболее фундаментальных контейнеров типа данных в языке программирования Python.
Определение и использование :
list.pop ()
Способ удаляет и возвращает последний элемент из существующего Список
Отказ list.pop (индекс)
Способ с дополнительным аргументом индекс
Удаляет и возвращает элемент в положение индекс
Отказ
Вот краткий пример:
>>> lst = [1, 2, 3] >>> lst.pop() 3 >>> lst [1, 2]
В первой строке примера вы создаете список lst
Отказ Затем вы удалите и возвращаете окончательный элемент 3 из списка. Результатом является список только с двумя элементами [1, 2]
Отказ
Код головоломки – попробуйте сами:
Вы также можете решить головоломку кода о list.pop () Метод и отслеживать навыки Python в нашем интерактивном приложении Finxter.
Синтаксис :
Вы можете вызвать этот метод на каждом объекте списка в Python. Вот синтаксис:
list.pop (index = -1)
Аргументы:
показатель | Дополнительный аргумент. Вы можете определить индекс элемента, который будет удален и возвращен. Аргумент по умолчанию приводит к удалению элемента последнего списка с индексом -1. |
Возвращаемое значение:
Метод list.pop ()
имеет возврат ценности Объект
Отказ Он удаляет конкретный элемент из списка (по умолчанию: последний элемент) и возвращает его непосредственно к абонеру.
Видео:
Статьи по Теме:
- Окончательное руководство по спискам Python
Вот ваш бесплатный PDF чит-лист, показывающий вас все методы списка Python на одной простой странице. Нажмите на изображение, чтобы загрузить файл PDF с высоким разрешением, распечатать его и опубликовать его в свою офисную стену:
Python List Pop () по индексу
Вы можете использовать list.pop (индекс)
Способ с дополнительным аргументом индекса для удаления и возврата элемента в положении индекс
из списка.
Вот пример:
>>> customers = ['Alice', 'Bob', 'Ann', 'Frank'] >>> customers.pop(2) 'Ann' >>> customers ['Alice', 'Bob', 'Frank'] >>> customers.pop(0) 'Alice' >>> customers ['Bob', 'Frank']
После создания списка с четырьмя элементами вы сначала удалите и верните второй элемент «Энн»
Отказ Затем вы удаляете и вернем первый элемент «Алиса»
Отказ Полученный список имеет только два элемента.
Список Python POP () First/Front/Left/Head
list.pop (индекс)
Способ с дополнительным аргументом индекса для удаления и возврата элемента в положении индекс
из списка. Так что, если вы хотите удалить первый элемент из списка, просто установите index = 0
Призывая list.pop (0)
Отказ Это появится первый элемент из списка.
Вот пример:
>>> primes = [1, 2, 3, 5, 7, 11] >>> primes.pop(0) 1 >>> primes [2, 3, 5, 7, 11]
POP (0)
Способ удаляет первый элемент 1 из списка простых чисел, приведенных в примере.
Список Python POP () по значению
В предыдущих двух примерах вы видели, как поп-элементы по индексу. Но вы также можете пойти по стоимости?
Да, вы можете использовать list.index (значение)
Способ, который дает вам индекс значения элемента в списке. Теперь вы можете использовать list.pop (индекс)
Способ этого индекса Чтобы удалить значение из списка и получить результат в качестве возвращаемого значения.
Вот пример, где вы хотите поп-элемент 7 из списка и хранить результат в переменной uvery_prime
Отказ
>>> primes = [1, 2, 3, 5, 7, 11] >>> some_prime = primes.pop(primes.index(7)) >>> some_prime 7
Если вы не заинтересованы в возвращенной стоимости, но вы хотите только удалить первое вхождение значения х
В Список
Используйте list.remove (x)
метод.
Связанная статья:
- Список Python Удалить ()
Список Python POP () Несколько элементов
Если вы можете поп- один Элемент из списка Python, естественный вопрос, если вы также можете поп- несколько элементы одновременно?
Ответ нет. Вы не можете напрямую поп-кратную элемент из списка. Но вы можете сделать это косвенно с помощью простого заявления о понимании списка.
Список Python POP () Первые N элементов
Скажем, вы хотите поп-первые N элементов из списка. Как ты это делаешь?
Вы просто создаете список значений, используя понимание списка [List.pop (0) Для I в пределах (n)]
Чтобы удалить и вернуть первый N
Элементы списка.
Вот еще один пример:
>>> lst = ['a', 'b', 'c', 'd', 'e', 'f'] >>> popped = [lst.pop(0) for i in range(5)] >>> popped ['a', 'b', 'c', 'd', 'e'] >>> lst ['f']
Скопчатый список содержит первые пять элементов. Оригинальный список имеет только один элемент.
Список Python POP () Последние n элементов
Скажем, вы хотите попять последние N элементов из списка. Как ты это делаешь?
Вы просто создаете список значений, используя понимание списка [List.pop () Для I в пределах (n)]
Чтобы удалить и вернуть последний N
Элементы списка.
Вот еще один пример:
>>> lst = ['a', 'b', 'c', 'd', 'e', 'f'] >>> [lst.pop() for i in range(5)] ['f', 'e', 'd', 'c', 'b'] >>> lst ['a']
Скопчатый список содержит последние пять элементов. Оригинальный список имеет только один элемент.
Список Python POP () Сложность времени
Сложность времени поп () Метод постоянен o (1). Независимо от того, сколько элементов находится в списке, выскакивание элемента из списка занимает то же время (плюс минус постоянные факторы).
Причина в том, что списки реализуются с массивами в Cpython Отказ Извлечение элемента из массива имеет постоянную сложность. Удаление элемента из массива также имеет постоянную сложность. Таким образом, извлекивая и удаление элемента, как это сделано POP ()
Метод имеет постоянную сложность времени выполнения тоже.
Я написал короткий скрипт для оценки сложности выполнения POP ()
Метод в Python:
import matplotlib.pyplot as plt import time y = [] for i in [100000 * j for j in range(5,15)]: lst = list(range(i)) t0 = time.time() x = lst.pop(0) t1 = time.time() y.append(t1-t0) plt.plot(y) plt.xlabel("List elements (10**5)") plt.ylabel("Time (sec)") plt.show()
Полученный график показывает, что сложность выполнения является линейной, даже если количество элементов значительно увеличивается:
(Хорошо, есть несколько ударов, но кто действительно заботится?)
Обратите внимание, что сложность выполнения по-прежнему является линейным, если мы всплым последним элементом или любым другим произвольным элементом из списка.
Python List Pop () vs Удалить ()
В чем разница между помощью List.pop () и списков.
-
list.remove (элемент)
Способ удаляет первое возникновениеэлемент
из существующегоСписок
Отказ Это, однако, не удалит все вхождения элемента в списке! -
list.pop ()
Способ удаляет и возвращает последний элемент из существующегоСписок
Отказlist.pop (индекс)
Способ с дополнительным аргументоминдекс
Удаляет и возвращает элемент в положениеиндекс
Отказ
Таким образом, метод удаления удаляет по значению и метод POP удаляет по индексу. Кроме того, метод удаления ничего не возвращает (он работает в самом списке), и метод POP возвращает удаленный объект.
Список Python POP и Push (Stack)
Python не имеет встроенного Стекстическая структура данных Потому что это не нужно. Вы можете просто создать пустой список и называть его стеком. Затем вы используете метод Stack.Append (X) для нажимания элемента x в стек. И вы подаете следующее: метод Stack.pop (), чтобы протолкнуть верхний элемент из стека.
Вот пример, который показывает, как нажимать три значения в стек, а затем удалить их в традиционной первой в порядке последнего (FILO) стеками.
>>> stack = [] >>> stack.append(5) >>> stack.append(42) >>> stack.append("Ann") >>> stack.pop() 'Ann' >>> stack.pop() 42 >>> stack.pop() 5 >>> stack []
Список Python POP () без удаления
Хочу POP ()
Элемент из данного списка, не удаляя его? Не делай этого! Вместо этого используйте простую индексацию. Чтобы получить элемент с индексом Я
от Список
просто используйте схему индексации Список [I]
Отказ Это будет держать оригинальный элемент в списке, не удаляя его.
Python List Pop () Если не пусто
Как вы можете попить () элемент только в том случае, если список не пуст в одной строке кода? Используйте Тернарный оператор в Python lst.pop () Если LST еще нет
следующее:
>>> lst = [1, 2, 3] >>> for i in range(5): print(lst.pop() if lst else None) 3 2 1 None None
Вы пытаетесь выпустить левый элемент пять раз из списка только с тремя значениями. Тем не менее, нет сообщения об ошибке из-за вашего опыта использования тройного оператора, который проверяет одну строку, если список пуст. Если он пуст, это не поп, но вернуть Нет
стоимость.
Если вы не используете The Terary Operator в этом примере, Python бросит IndexError
Как вы пытаетесь выскочить из пустого списка:
>>> lst = [1, 2, 3] >>> for i in range(5): print(lst.pop()) 3 2 1 Traceback (most recent call last): File "", line 2, in print(lst.pop()) IndexError: pop from empty list
Список Python POP () Ломтик
Можете ли вы появиться целым ломтиком одновременно? Ну, вы можете удалить целый кусочек, используя ключевое слово del: удалить ломтик lst [Start: Stop]
Из списка вы можете позвонить del lst [start: Stop]
Отказ Тем не менее, вы не получите ломтик в качестве возвращаемого значения, поэтому вы можете сначала хранить ломтик в отдельной переменной, прежде чем удалить его из списка.
Список Python POP () во время итерации
Всегда опасно изменить список, над которым вы имеете в настоящее время.
Почему? Поскольку итератор создается только один раз в определении петли, и оно будет упорно дать вам индексы, которые он подготовлен в начале. Если контур меняется, показатели изменились также изменится. Но итератор не адаптирует индексы для учета этих изменений. Вот пример:
>>> lst = list(range(10)) >>> for i in range(len(lst)): lst.pop(i) 0 2 4 6 8 Traceback (most recent call last): File "", line 2, in lst.pop(i) IndexError: pop index out of range
Ух ты – это было неожиданно, не так ли? Вы выскочили только каждый второй элемент из списка. Почему? Потому что в первой итерации указатель переменной I = 0
Отказ Теперь мы удаляем это из списка. Элемент 1 в списке имеет сейчас индекс 0 после удаления предыдущего ведущего элемента. Но во второй петле итерации ветвивальная переменная имеет индекс I = 1
Отказ Это следующий элемент, который будет выпущен. Но вы пропустили всплывающие элемент 1 из списка в положении индекс 0! В результате появляется только каждый другой элемент.
Альтернативные способы удаления элементов из списка
Существуют некоторые альтернативные способы удаления элементов из списка. Смотрите таблицу обзора:
lst.remove (x) | Удалите элемент из списка (по значению) |
lst.pop () | Удалите элемент из списка (по индексу) и верните элемент |
lst.clear () | Удалите все элементы из списка |
del lst [3] | Удалите один или несколько элементов из списка (по индексу или ломтию) |
Список понимания | Удалите все элементы, которые соответствуют определенному условию |
Далее вы погрузитесь в каждый из этих методов, чтобы получить глубокое понимание.
Удалить () – Удалить элемент по значению
Чтобы удалить элемент из списка, используйте list.remove (элемент)
Метод вы уже видели ранее:
>>> lst = ["Alice", 3, "alice", "Ann", 42] >>> lst.remove("Ann") >>> lst ['Alice', 3, 'alice', 42]
Попробуй сам:
Метод идет слева направо и удаляет первый вхождение элемента, который равный для того, чтобы быть удаленным.
Удаленный элемент не существует
Если вы пытаетесь удалить элемент X из списка, но X не существует в списке, Python выдает ошибку значений:
>>> lst = ['Alice', 'Bob', 'Ann'] >>> lst.remove('Frank') Traceback (most recent call last): File "", line 1, in lst.remove('Frank') ValueError: list.remove(x): x not in list
POP () – удалить элемент по индексу
По умолчанию, POP ()
Способ удаляет последний элемент из списка и возвращает элемент.
>>> lst = ['Alice', 'Bob', 'Ann'] >>> lst.pop() 'Ann' >>> lst ['Alice', 'Bob']
Но вы также можете определить дополнительный аргумент индекса. В этом случае вы удалите элемент в данном индексе – немного известного секрета Python!
>>> lst = ['Alice', 'Bob', 'Ann'] >>> lst.pop(1) 'Bob' >>> lst ['Alice', 'Ann']
Очистить () – Удалить все элементы
Очистить ()
Метод просто удаляет все элементы из заданного объекта списка.
>>> lst = ['Alice', 'Bob', 'Ann'] >>> lst.clear() >>> lst []
Del – Удалить элементы по индексу или срезам
Этот трюк также относительно неизвестен среди начинающих Python:
- Использовать
del lst [индекс]
Чтобы удалить элемент при индексе. - Использовать
del lst [start: Stop]
Чтобы удалить все элементы в ломтик Отказ
>>> lst = list(range(10)) >>> lst [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> del lst[5] >>> lst [0, 1, 2, 3, 4, 6, 7, 8, 9] >>> del lst[:4] >>> lst [4, 6, 7, 8, 9]
Связанные статьи в блоге:
- Проверьте мой полный урожай нарезки, который делает вас главным слайком через 15 минут или около того!
Понимание списка – удалить элементы условно
Хорошо, это вроде мошенничество, потому что этот метод на самом деле не удаляет элементы из объекта списка. Это просто создает новый список с некоторыми элементами, которые соответствуют вашему состоянию.
Понимание списка является компактным способом создания списков. Простая формула [экспрессия + контекст].
- Выражение: Что делать с каждым элементом списка?
- Контекст: в каком списке элементы выбрать? Он состоит из произвольного количества для и если утверждения.
Пример [X для X в диапазоне (3)] Создает список [0, 1, 2] .
Вы также можете определить состояние, такое как все нечетные значения х% 2 == 1
в контексте, используя состояние, если. Это приводит нас к способу удаления всех элементов, которые не соответствуют определенным условиям в данном списке.
>>> lst = list(range(10)) >>> lst_new = [x for x in lst if x%2] >>> lst_new [1, 3, 5, 7, 9]
Пока вы повторяете весь список lst
, состояние х% 2
требует, чтобы элементы нечетными.
Связанные статьи в блоге:
- Проверьте мой полный урок понимания списка для максимального обучения!
Список Python POP () Безопасность потока
У вас есть несколько потоков, которые одновременно получают доступ к вашему списку? Тогда вы должны быть уверены, что операции списка (например, POP ()
) на самом деле резьба безопасна Отказ
Другими словами: вы можете позвонить в POP ()
Операция в двух потоках в том же списке одновременно? (И вы можете быть уверены, что результат является значимым?)
Ответ да (если вы используете Mokef Cpython внедрение). Причина – Питона Блокировка глобального интерпретатора Это гарантирует, что поток, работающий в данный момент в этом коде, сначала завершит текущую базовую операцию Python, как определено реализацией CPYPHON. Только если оно завершится с помощью этой операции, сможет получить следующий поток для доступа к вычислительному ресурсу. Это обеспечивается сложной схемой блокировки в результате реализации CPYPHON.
Единственное, что вам нужно знать, состоит в том, что каждая основная операция в реализации CPYPHON является атомный Отказ Он выполнен полностью и сразу, прежде чем любой другой поток имеет возможность запустить на одном виртуальном двигателе. Поэтому нет условий расы. Примером для такого состояния гонки будет следующее: Первый поток считывает значение из списка, вторые потоки перезаписывают значение, и первая тема перезаписывает значение снова недействительным в операции второго потока.
Все операции Cpython являются потоковыми безопасными. Но если вы объединяете эти операции на функции более высокого уровня, это не в целом без резьбы, поскольку они состоят из многих (возможно, чередующихся) операций.
Куда пойти отсюда?
list.remove (элемент)
Способ устраняет первое вхождение элемент
от Список
Отказ
Вы узнали 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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.