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

Python Set POP ()

Метод Python Set.pop () удаляет и возвращает произвольный элемент из множества. Если ни один элемент не присутствует – то есть вы называете его на пустом наборе – set.pop () поднимает keyError. https://youtu.be/xj4c71u5ofy Вот минимальный пример, где вы удаляете струнный элемент, который происходит «Alice» из множества с помощью … Python Set POP () Подробнее »

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

Python’s set.pop () Способ удаляет и возвращает произвольный элемент из набора. Если ни один элемент не присутствует – то есть вы называете его на пустом наборе – set.pop () поднимает KeyError Отказ

Вот минимальный пример, где вы удаляете строковый элемент, который оказывается «Алиса» от установленного с помощью S.POP () Метод:

>>> s = {'Alice', 'Bob', 'Carl'}
>>> s.pop()
'Alice'

Синтаксис

Давайте погрузимся в формальный синтаксис set.pop () метод.

set.pop()

Python Set POP () определенный элемент

💡 set.pop () Метод не берет аргумент. Если вы все еще проходите аргумент, он поднимает TypeError: POP () не принимает аргументов (1 дано) Отказ Чтобы исправить это, не проходите аргумент в метод. Если вам нужно удалить определенный элемент из набора, используйте set.remove (x) Способ или, чтобы избежать ошибки, когда элемент для удаления нет, используйте set.discard (x) метод.

>>> s = {'Alice', 'Bob', 'Carl'}
>>> s.pop('Bob')
Traceback (most recent call last):
  File "", line 1, in 
    s.pop('Bob')
TypeError: pop() takes no arguments (1 given)

>>> s.remove('Bob')
>>> s
{'Alice', 'Carl'}

Возвращаемое значение SET POP ()

Возвращаемое значение set.pop () это объект это было сохранено как набор элемента. Если набор пуст, он поднимает KeyError Отказ

Как исправить keyError: ‘POP из пустого набора’

💡 set.pop () Метод предполагает, что набор не пустым. Если вы вызываете метод на пустом наборе, он поднимает KeyError: «Поп из пустого набора» Отказ Чтобы исправить это, убедитесь, что набор не пустая перед вызовом метода POP () или использовать set.discard () Метод вместо этого не вызывает ошибку на несущественную клавишу.

>>> set().pop()
Traceback (most recent call last):
  File "", line 1, in 
    set().pop()
KeyError: 'pop from an empty set'

Вот код функции pop_no_error () Это принимает набор аргументов и выскакивает произвольный элемент, если кто-то существует. В противном случае это возвращает Нет :

>>> def pop_no_error(my_set):
	return my_set.pop() if my_set else None

>>> pop_no_error({1, 2, 3})
1
>>> pop_no_error(set())
>>> 

set.pop () vs set.remove ()

set.pop () Метод похож на Set.Remove () метод. Оба метода удаляют элемент из набора. Тем не менее, они совершенно разные, тем не менее.

💡 Разница между set.pop () и Set.Remove () Это прежнее Удаляет и возвращает произвольный элемент тогда как последний Удаляет определенный элемент и не возвращает его Отказ

Вы можете увидеть это в следующем примере:

>>> s = {'Alice', 'Bob', 'Carl'}
>>> s.remove('Carl')
>>> s
{'Alice', 'Bob'}
>>> s.pop()
'Alice'
>>> s
{'Bob'}

Обратите внимание, что Удалить Метод не имеет возвращаемого значения, а побочные эффекты – элемент «Карл» Не появляется в комплекте больше. поп Метод имеет возвращаемое значение и имеет побочные эффекты, а также элемент «Алиса» Не появляется в комплекте больше.

Python Set POP несколько элементов

Проблема формулировки : Учитывая Установить и целое число N Отказ Вы хотите удалить и вернуться («POP») n случайных элементов из набора. Как вы это делаете?

💡 Чтобы попмерить несколько элементов из набора, используйте Понимание списка выражение [S.POP () Для I в диапазоне (N)] Отказ Это предполагает, что набор имеет по крайней мере N Элементы, в противном случае A KeyError будет поднят.

Вот код:

s = {'Alice', 'Bob', 'Carl', 'Liz', 'Ann'}
n = 3

def pop_n(s, n):
    '''Remove and return n elements from s'''
    if n>len(s):
        return list(s)
    return [s.pop() for i in range(n)]


print(pop_n(s, n))
# ['Ann', 'Liz', 'Bob']

print(s)
# {'Ann', 'Carl'}

Что такое временная сложность SET.POP ()?

Сложность времени выполнения set.pop () Функция на комплекте с N Элементы это O (1) Отказ Итак, Python’s set.pop () Метод имеет Постоянная сложность времени выполнения Отказ Он просто удаляет и возвращает первый элемент, который он встречается.

Вы можете увидеть это в следующем простом эксперименте, в котором мы запускаем метод SET несколько раз для увеличения числа заданных элементов.

Я провел этот эксперимент на моем Acer Aspire 5 ноутбука (Я знаю) с Intel Core I7 (8-й GEN) процессор и 16 ГБ памяти. Вот код эксперимента:

import matplotlib.pyplot as plt
import time

sizes = [i * 10**5 for i in range(1, 50)]
runtimes = []

for size in sizes:
    s = set(range(size))

    # Start track time ...
    t1 = time.time()
    s.pop()
    t2 = time.time()
    # ... end track time
    
    runtimes.append(t2-t1)


plt.plot(sizes, runtimes)
plt.ylabel('Runtime (s)')
plt.xlabel('Set Size')

plt.show()

Другие методы набора Python

Все Установить методы называются данными Установить Отказ Например, если вы создали набор s = {1, 2, 3} Вы бы назвали S.CLEAR () Чтобы удалить все элементы набора. Мы используем термин «Этот набор» обратиться к множеству, на котором выполняется метод.

Добавлять() Добавьте элемент на этот набор
Чисто() Удалите все элементы из этого набора
Копировать () Создать и вернуть плоскую копию этого набора
разница() Создайте и верните новый набор, содержащий все элементы этого набора, кроме те, которые в данных аргументах. Полученный набор имеет максимум максимально возможным элементам, как и любой другой.
Разница_update () Удалите все элементы из этого набора, которые являются членами любого из заданных аргументов.
отказаться() Удалите элемент из этого набора, если он является членом, иначе ничего не сделайте.
Пересечение () Создайте и верните новый набор, который содержит все элементы, которые являются членами всех наборов: это также указано. Отказ
Intersection_Update () Удаляет все элементы из этого набора, которые не являются членами во всех других указанных наборах.
iSdisjoint () Верните true, если ни один элемент из этого набора не является членом любого другого указанного набора. Наборы пересекаются, если и только если их пересечение – это пустой набор.
issubset () Верните True, если все элементы этого набора являются членами указанного набора аргумента.
ОСУПЕРСЕТ () Верните true, если все элементы указанного набора аргумента являются членами этого набора.
поп () Удалить и вернуть случайный элемент из этого набора. Если набор пуст, он поднимет брелок.
Удалить() Удалите и верните определенный элемент из этого набора, как определено в аргументе. Если набор не содержит элемента, он поднимет keyError.
Symmetric_difference () Верните новый набор с элементами в этом наборе или указанном наборе аргумента, но не элементы, которые являются членами обоих.
Symmetric_difference_update () Замените этот набор с помощью симметричной разницы, то есть элементы в этом наборе или указанном наборе аргумента, но не элементы, которые являются членами обоих.
Союз () Создайте и верните новый набор со всеми элементами, которые находятся в этом наборе или в любом из указанных настроек аргументов.
Обновить() Обновите этот набор со всеми элементами, которые находятся в этом наборе, или в любом из указанных настроек аргументов. Полученный набор имеет по меньшей мере, как и любой другой элементы.

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.