Рубрики
Без рубрики

Список Python POP ()

В этом руководстве показано вам все, что вам нужно знать, чтобы помочь вам овладеть важнейшим способом POP () наиболее фундаментального типа данных контейнера в языке программирования Python. Определение и использование: метод list.pop () удаляет и возвращает последний элемент из существующего списка. Метод list.pop (index) с дополнительным индексом аргумента удаляет и … Python Size POP () Подробнее »

Автор оригинала: Chris.

В этом руководстве показано вам все, что вам нужно знать, чтобы помочь вам овладеть необходимым 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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.