Python’s S.symmetric_difference_update (t)
Определяет все элементы, которые находятся в одном из двух наборов S
или T
и обновления набор S
с этими элементами.
Вот минимальный пример, где мы обновляем существующие Установить состоит из элементов 1 и 4, которые находятся в одном из двух наборов S
и T
Отказ
>>> s = {1, 2, 3} >>> t = {2, 3, 4} >>> s.symmetric_difference_update(t) >>> s {1, 4}
Вот еще один визуальный пример из Гарри Поттера: Есть хорошие волшебники, плохие волшебники и волшебники, которые оба. Симметричная разница между этими двумя наборами состоит из всех волшебников, которые являются либо хорошими или плохими, но не оба – как профессор Снейп.
>>> good = {'ron', 'harry', 'hermione', 'dumbledore', 'snape'} >>> bad = {'grindewald', 'voldemort', 'malfoy', 'snape'} >>> good.symmetric_difference_update(bad) >>> good {'ron', 'hermione', 'dumbledore', 'harry', 'grindewald', 'voldemort', 'malfoy'}
Синтаксис
Давайте погрузимся в формальный синтаксис set.symmetric_difference_update ()
метод.
set.symmetric_difference_update(set)
задавать | Множество | Набор, который следует использовать в качестве основы для симметричных разных вычислений |
Возвращаемое значение
Возвращаемое значение set_1.symmetric_difference_update (set_2)
это Нет
Отказ Но побочный эффект заключается в том, что оригинал Set_1
Теперь содержит элементы, которые ранее существовали в одном из множеств Set_1
или Set_2
Отказ
Усовершенствованные примеры Набор симметричных разных обновлений
Существуют некоторые тонкости, которые вы должны понимать по поводу установленного симметричной функции обновления разности. Давайте погрузимся в них пример!
Простой пример состоит в том, чтобы рассчитать симметричную разницу набора с другим подмножеством и обновлять оригинальный набор соответственно:
>>> s = {1, 2, 3} >>> s.symmetric_difference_update({1}) >>> s {2, 3}
Но что, если вы инвертируете это и рассчитаете симметричную разницу между подмножеством и суперсетом? В этом случае результатом является тем же набором, что и до того, что он содержит элементы, которые находятся в одном из двух наборов.
>>> s = {1} >>> s.symmetric_difference_update({1, 2, 3}) >>> s {2, 3}
Можете ли вы вычислить симметричную разницу между набором и пустым набором? Конечно! Но это не изменяет оригинальный набор:
>>> s = {1, 2, 3} >>> s.symmetric_difference_update(set()) >>> s {1, 2, 3}
Установить Symmetric_difference () vs symmetric_difference_uppdate ()
set.symmetric_difference ()
Метод возвращает новый набор, тогда как set.symmetric_difference_update ()
Работает на множестве, он вызывается и возвращает Нет
Отказ
s.symmetric_defference (t)
– Верните новый набор с элементами в этом наборе или указанном наборе аргумента, но не элементы, которые являются членами обоих.с.
Симметричный_
Разница_update (t)
– Замените этот набор с помощью симметричной разницы, то есть элементы в этом наборе, либо указанный набор аргументом, но не элементы, которые являются членами обоих.
Вот пример, который показывает симметричный разностный метод:
>>> s = {1, 2, 3} >>> t = s.symmetric_difference({1, 2}) >>> s {3}
И set.symmetric_difference_update ()
Обновления на существующем наборе S
И ничего не возвращает:
>>> s = {1, 2, 3} >>> s.symmetric_difference_update({1, 2}) >>> s {3}
Что такое временная сложность SET.Symmetric_difference_update ()?
Сложность времени выполнения set.symmetric_difference_update ()
Функция на комплекте с N Элементы и установленный аргумент с м Элементы это O (m + n) Поскольку вам нужно проверить каждый элемент в обоих наборах, является ли он элемент другого набора. Проверка членства – O (1) Так что сложность выполнения – это O (N) * O (1) + O (M) * (N + M) Отказ
Вы можете увидеть это в следующем простом эксперименте, в котором мы запускаем метод набора несколько раз для увеличения размеров набора:
Я провел этот эксперимент на моем 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.symmetric_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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.