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

Python Set Symmetric_difference ()

Метод Python S.Symmetric_Differenceferenceference (T) создает и возвращает новый набор, содержащий все элементы, которые находятся в одном из двух наборов S и T. https://youtu.be/wttt-emu9c9k, вот минимальный пример, где мы возвращаем новый Установите, содержащие элементы 1 и 4, которые находятся в одном из двух наборов S и T. >>> S … Python Set Symmetric_Difference () Подробнее »

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

Python’s S.symmetric_defference (t) Способ создает и возвращает новый набор, содержащий все элементы, которые находятся в одном из двух наборов S и T Отказ

Вот минимальный пример, где мы возвращаем новый Установить содержащие элементы 1 и 4, которые находятся в одном из двух наборов S и T Отказ

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

Вот еще один визуальный пример из Гарри Поттера: Есть хорошие волшебники, плохие волшебники и волшебники, которые оба. Симметричная разница между этими двумя наборами состоит из всех волшебников, которые являются либо хорошими или плохими, но не оба – как профессор Снейп.

>>> good = {'ron', 'harry', 'hermione', 'dumbledore', 'snape'}
>>> bad = {'grindewald', 'voldemort', 'malfoy', 'snape'}
>>> good.symmetric_difference(bad)
{'ron', 'hermione', 'dumbledore', 'harry', 'grindewald', 'voldemort', 'malfoy'}

Синтаксис

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

set.symmetric_difference(set)
задавать Множество Набор, который следует использовать в качестве основы для симметричных разных вычислений

Возвращаемое значение Set.symmetric_diffumense ()

Возвращаемое значение set_1.symmetric_diffumense (set_2) это новый набор, содержащий все элементы, которые находятся в одном из двух наборов.

Python Set Симметричная разница ^ Оператор

💡 гораздо более лаконичный способ написать набор симметричной разницы – перегруженная «шляпа» оператора “^” Отказ Применительно к двум наборам S и T , результат S ^ T такой же, как звонить s.symmetric_defference (t) Отказ Он вычисляет симметричную разницу всех элементов в исходном наборе, кроме элементов во втором наборе.

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

>>> s = {1, 2, 3}
>>> t = {2, 3, 4}
>>> s.symmetric_difference(t)
{1, 4}
>>> s ^ t
{1, 4}

Вы можете увидеть, что эта «шляпа» нотация более лаконична и читается одновременно. Поэтому рекомендуется использовать ^ Оператор над set.symmetric_difference () метод.

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

Усовершенствованные примеры Набор симметричной разницы

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

Простой пример состоит в том, чтобы рассчитать симметричную разницу набора с другим подмножеством:

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

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

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

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

>>> {1, 2, 3}.symmetric_difference(set())
{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 ()?

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