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