Наборы Python: разность () и симметричная_дифференция ()

В чем разница между разностными () и симметричным_дифференциальными () методами в наборах питонов?

2 ответа

Решение

Если a а также b наборы

a - b

это все в a это не в b,

>>> a = {1,2,3}
>>> b = {1,4,5}
>>> 
>>> a - b
{2, 3}
>>> b - a
{4, 5}

a.symmetric_difference(b) все элементы, которые находятся в одном наборе, например, объединение a - b а также b - a,

>>> a.symmetric_difference(b)
{2, 3, 4, 5}
>>> (a - b).union(b - a)
{2, 3, 4, 5}

Разница между двумя наборами (или группами вещей) не совсем такая же, как арифметическая разница.

Рассмотрим два набора выше (синий и зеленый) как два набора или круга, которые пересекаются друг с другом. Желтая часть - это пересечение, принадлежащее обоим наборам.

Теперь рассмотрим, какой должен быть набор, полученный в результате вычитания зеленого из синего. А зелень должна быть? Нет. Он будет иметь синий цвет, который не является зеленым (или не желтым, по той же логике). Это верно и в обратном направлении.

Таким образом, вы можете получить предметы из одного набора или другого, но не из обоих. Хочу познакомить тебя, мой маленький друг, симметричное различие. Дает вам синий и зеленый, но не желтый.

>>> a = {1,2,3}
>>> b = {1,4,5}
>>> a - b       ## asymmetric difference
{2, 3}
>>> b - a       ## asymmetric difference
{4, 5}
>>> a ^ b       ## symmetric difference
{2, 3, 4, 5}

Асимметричная разница зависит от того, что вы делаете с a а также b, или в каком порядке вы их сравниваете. Посмотрите на это одним способом - получите одно, посмотрите на другое - получите другое. Где асимметричная разница по определению не имеет значения, как на нее смотреть.

Запись. Это поведение аналогично XOR. Следовательно, оператор выбран на языке Python.^ также используется как двоичный XOR, если вы даете ему числа.

По https://www.programiz.com/python-programming/methods/set/symmetric_difference:

Симметричная разность двух наборов A и B - это набор элементов, которые находятся в любом из наборов A или B, но не в обоих.

Однако разница, конечно, не требует пояснений.

Другие вопросы по тегам