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

Python Set пересечение ()

Набор Python. Internersection (Sets) создает и возвращает новый набор, состоящий из элементов, которые являются членами всех наборов – это и заданный аргумент (ы). Полученный набор имеет максимально возможное, как и любой другой набор, приведенный в списке аргументов. https://youtu.be/l3gqfzhdu40 Вот минимальный пример, который создает новый набор, возникающий из … Python Set Internersion () Подробнее »

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

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

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

>>> s = {1, 2, 3, 4}
>>> t = {3, 4, 5}
>>> s.intersection(t)
{3, 4}

Синтаксис

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

set.intersection(*sets)
* Наборы Один или несколько наборов Элементы этих наборов будут пересечены

Возвращаемое значение установленного пересечения ()

Возвращаемое значение Set.inserSetion () это новый набор, состоящий из элементов, которые являются членами Все Наборы, в том числе установленные его вызываемым. Он имеет максимально большее количество элементов, как любой другой набор, участвующий в пересечении.

Усовершенствованные примеры Установите пересечение

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

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

>>> {1, 2, 3}.intersection({1, 2})
{1, 2}

Но что, если вы перевернуте это и рассчитаете пересечение подмножества и суперсета? В этом случае результат такой же, как и раньше:

>>> {1, 2}.intersection({1, 2, 3})
{1, 2}

Можете ли вы вычислить пересечение набора и пустой набор? Конечно! Возвращаемое значение – пустой набор

>>> {1, 2, 3}.intersection(set())
set()

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

>>> {1, 2, 3}.intersection({2, 3, 4})
{2, 3}

Установить пересечение нескольких аргументов

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

Вот пример:

>>> {1, 2, 3, 4, 5, 6}.intersection({1, 2}, {1, 3, 4}, {1, 3, 5})
{1}

Только элемент 1 является членом всех связанных наборов.

Python Set пересечение и

Гораздо более лаконичный способ написать набор пересечений – это перегруженный оператор & Отказ Применительно к двум наборам S и T , результат S & T такой же, как звонить S.indersection (T) Отказ Он вычисляет пересечение множеств.

Вот основной пример:

>>> {1, 2, 3, 4}.intersection({3, 4, 5})
{3, 4}
>>> {1, 2, 3, 4} & {3, 4, 5}
{3, 4}

Это & Обозначение более лаконично и читается. Поэтому вы можете выбрать & Оператор над Set.Нажмите () метод.

Для вычисления установленного пересечения нескольких наборов с оператором и оператором, цепь вместе несколько вычислений пересечения, как это: S0 & S1 & S2 & ... & Sn Отказ

>>> {1, 2, 3, 4, 5} & {1, 2} & {1, 2, 3} & {1, 3, 4, 2}
{1, 2}

Вам не нужно импортировать какую-либо библиотеку для использования и оператора – это встроена.

Установите пересечение () против Intersection_Update ()

Set.Нажмите () Метод возвращает новый набор, тогда как set.indersex_Update () Работает на множестве, он вызывается и возвращает Нет Отказ

  • S.indersection (T) – Создает новый набор с пересечением S и T Отказ Оригинальный набор S остается неизменной. Возвращает новый набор.
  • S.Interners_Update (t) – Работает на оригинальном наборе S и удаляет все элементы, которые не в T Отказ Возвращает Нет Отказ

Вот пример, который показывает разницу между обоими методами:

>>> s = {1, 2, 3}
>>> t = s.intersection({1, 2})
>>> s
{1, 2, 3}

И set.indersex_Update () Обновления на существующем наборе S и возвращает Нет :

>>> s = {1, 2, 3}
>>> s.intersection_update({1, 2})
>>> s
{1, 2}

Сколько времени сложность установленного пересечения в Python?

Сложность времени выполнения Set.Нажмите () Способ на комплекте с N Элементы и установленный аргумент с м Элементы это O (мин (N, м)) Поскольку вам необходимо проверить на меньший набор, является ли каждый из его элементов элементами более крупного набора. Проверка членства – O (1) Так что сложность выполнения – это O (мин (n, м)) * ( min (n, m) ) Отказ

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

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