Наборы 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, но не в обоих.
Однако разница, конечно, не требует пояснений.