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

Python set isdisjoint ()

Set python set.isdisjoint (set) возвращает true, если ни один элемент из этого набора не является членом указанного набора. Наборы пересекаются, если и только если их пересечение – это пустой набор. https://youtu.be/egzjzml53fu Вот минимальный пример, который проверяет ли наборы S и T несерьезно: >>> S = {1, 2, 3, 4} >>> T = {‘Alice’, … Python Set iSdisjoint () Подробнее »

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

Python’s set.isdisjoint (set) Возвращает Правда Если ни один элемент из этого набора не является членом указанного набора. Наборы пересекаются, если и только если их пересечение – это пустой набор.

Вот минимальный пример, который проверяет ли наборы S и T несерьезно:

>>> s = {1, 2, 3, 4}
>>> t = {'Alice', 'Bob'}
>>> s.isdisjoint(t)
True

Синтаксис

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

set.isdisjoint(set)
набор Набор или истечение Набор, на котором должны быть проверены элементы этого набора

Возвращаемое значение set.isdisjoint ()

Возвращаемое значение set.isdisjoint () Это логическое, неселено ли набор с набором, определенным как аргумент.

Усовершенствованные примеры Set.isdisjoint ()

Существуют некоторые тонкости, которые вы должны понимать в отношении установленного метода непересекающегося. Давайте погрузимся в них пример!

Начнем с простого и тривиального примера двух непересекающихся наборов:

>>> {1, 2, 3}.isdisjoint({'Alice', 'Bob'})
True

💡 Вы также можете пройти список в качестве аргумента для set.isdisjoint () метод? Ответ да – метод принимает любой счетчик.

>>> {1, 2, 3}.isdisjoint(['Alice', 'Bob'])
True

Давайте приведем пример непересекающейся комбинации SET, которая пересекается в одном элементе, вы можете выяснить, какие?

>>> {1, 2, 3}.isdisjoint({'Alice', 'Bob', 1})
False

Два пустых устанавливаются непересекаются? Да – у них нет общих элементов. Пересечение между двумя пустыми наборами пусто, поэтому они несерьезны!

>>> set().isdisjoint(set())
True

То же самое держится, если один из наборов не пустые:

>>> set().isdisjoint({1, 2, 3})
True
>>> {1, 2, 3}.isdisjoint(set())
True

Можем ли мы пройти несколько аргументов на set.isdisjoint () метод? Нет! Это только один аргумент.

>>> {1, 2, 3}.isdisjoint({4, 5}, {'Alice', 'Bob'})
Traceback (most recent call last):
  File "", line 1, in 
    {1, 2, 3}.isdisjoint({4, 5}, {'Alice', 'Bob'})
TypeError: isdisjoint() takes exactly one argument (2 given)

Что такое временная сложность Set.isdisjoint () в Python?

В худшем случае сложность выполнения set.disjoint () Метод такой же, как Set.Нажмите () Метод, потому что он сначала вычисляет пересечение обоих наборов, а затем проверяет, является ли пересечение пусто для определения того, неселены ли наборы. Для набора с N Элементы и установленный аргумент с м Элементы, сложность времени выполнения – O (мин (N, м)) Поскольку вам необходимо проверить на меньший набор, является ли каждый из его элементов элементами более крупного набора. Однако на практике время выполнения может быть намного быстрее, потому что первый общий нашел элемент уже определяет ответ, и весь вычислений может быть прерван.

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

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

import matplotlib.pyplot as plt
import time

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

for size in sizes:
    s = set(range(size))
    t = set(range(0, size, 2))

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


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

plt.show()

Сложность времени выполнения чувствует постоянную. Только если мы немного изменим эксперимент, чтобы убедиться, что наборы не разделяют, мы увидим увеличение сложности выполнения с увеличением размеров набора:

import matplotlib.pyplot as plt
import time

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

for size in sizes:
    s = set(range(size))
    t = set(range(size, 2* size, 1))

    # Start track time ...
    t1 = time.time()
    s.isdisjoint(t)
    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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.