Python’s set.fefference (наборы)
Способ создает и возвращает новый набор, содержащий все элементы этого Установить
кроме тех в данном наборе аргумента или аргументов. Полученный набор имеет максимум как много элементов, как этот набор.
Вот минимальный пример, где мы возвращаем новый набор с элементами из существующего набора после удаления элементов 1 и 2 из нового набора:
>>> s = {1, 2, 3} >>> t = {1, 2} >>> s.difference(t) {3}
Синтаксис
Давайте погрузимся в формальный синтаксис set.fefference ()
метод.
set.difference(*sets)
* Наборы | Один или несколько наборов | Элементы этих наборов будут удалены из нового полученного набора. |
Возвращаемое значение установленной разницы ()
Возвращаемое значение set.fefference ()
это новый набор, содержащий все элементы Установить
Это вызывается, кроме те, которые в данном наборе аргумента или аргументов. Полученный набор имеет максимально возможное, как и любой другой набор, приведенный в списке аргументов.
Усовершенствованные примеры Установленные разницы
Существуют некоторые тонкости, которые вы должны понимать в отношении функции установки разницы. Давайте погрузимся в них пример!
Простой пример состоит в том, чтобы рассчитать разницу набора с другим подмножеством:
>>> {1, 2, 3}.difference({1}) {2, 3}
Но что, если вы инвертируете это и рассчитаете разницу подмножества и суперсета? В этом случае результатом является пустой набор после удаления всех элементов из нового набора:
>>> {1}.difference({1, 2, 3}) set()
Можете ли вы вычислить разницу между набором и пустым набором? Конечно! Возвращаемое значение является оригинальным набором, скопированным.
>>> {1, 2, 3}.difference(set()) {1, 2, 3}
Что, если есть перекрытие между наборами, но оба набора имеют элементы, которые не содержатся в другом? В этом случае вы бы удалили все элементы в перекрытии из нового набора-после копирования всех элементов из исходного набора в него.
>>> {1, 2, 3}.difference({2, 3, 4}) {1}
Установить разницу нескольких настроек аргументов
Вы можете вычислить разницу между оригинальным набором и произвольным количеством настроек аргументов. В этом случае возвращаемое значение будет набором, который содержит только элементы, которые являются членами только оригинального набора. Результатом является новый набор с этими элементами.
Вот пример:
>>> {1, 2, 3, 4, 5, 6}.difference({1, 2}, {3, 4}, {1, 3, 5}) {6}
Только элемент 6 не является членом любого из настроек аргументов.
Python Set разница против минус
Гораздо более лаконичный способ написать наборов разницы – перегруженный оператор минус “-“ Отказ Применительно к двум наборам S
и T
, результат S - T
такой же, как звонить s.difference (t)
Отказ Он вычисляет разницу всех элементов в исходном наборе, кроме элементов во втором наборе.
Вот основной пример:
>>> {1, 2, 3, 4}.difference({3, 4, 5}) {1, 2} >>> {1, 2, 3, 4} - {3, 4, 5} {1, 2}
Вы можете увидеть, что эта минус нотация более лаконична и читается одновременно. Поэтому рекомендуется использовать оператор минус над set.fefference ()
метод.
Чтобы вычислить установленную разницу нескольких множеств с оператором минус, цепь вместе несколько различий вычислений: S0 - S1 - S2 - ... - Sn
Отказ
>>> {1, 2, 3, 4, 5} - {1, 2} - {2, 3} - {3, 4} {5}
Вам не нужно импортировать какую-либо библиотеку для использования оператора минус – это встроенно.
Установить разницу () vs int_update ()
set.fefference ()
Метод возвращает новый набор, тогда как set.difference_update ()
Работает на множестве, он вызывается и возвращает Нет
Отказ
s.difference (t)
– Создайте и верните новый набор, содержащий все элементы этого набора, кроме те, которые в данных аргументах.s.difference_update (t)
– Удалите все элементы из этого набора, которые являются членами любого из данных настроек аргументов.
Вот пример, который показывает разницу между обоими методами:
>>> s = {1, 2, 3} >>> t = s.difference({1, 2}) >>> s {1, 2, 3}
И set.difference_update ()
Обновления на существующем наборе S
И ничего не возвращает:
>>> s = {1, 2, 3} >>> s.difference_update({1, 2}) >>> s {3}
Что такое временная сложность установленного разницы ()?
Сложность времени выполнения set.fefference ()
Функция на комплекте с N Элементы и установленный аргумент с м Элементы это O (n) Поскольку вам нужно проверить каждый элемент в первый набор, является ли он элемент второго набора. Проверка членства – O (1) Так что сложность выполнения – это O (n) * (n) Отказ Фактически, если второй набор меньше, сложность времени выполнения меньше, то есть, м
Вы можете увидеть это в следующем простом эксперименте, в котором мы запускаем метод набора несколько раз для увеличения размеров набора:
Я провел этот эксперимент на моем Acer Aspire 5 ноутбук (Я знаю) с Intel Core I7 (8-й GEN) процессор и 16 ГБ памяти. Вот код эксперимента:
import matplotlib.pyplot as plt import random 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.difference(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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.