![](/img/trans.png)
[英]re-implement __eq__ to compare sets with symmetric_difference in python
[英]Python sets: difference() vs symmetric_difference()
python集合中的difference()和symmetric_difference()方法有什么區別?
兩組(或一組事物)之間的差異與算術差異並不完全相同。
將上面的兩組(藍色和綠色)視為彼此相交的兩組或圓圈。 黃色部分是交集,屬於兩組。
現在考慮從藍色中減去綠色所得到的集合應該有什么。 它應該有任何綠色嗎? 不。它會有不是綠色的藍色(或者不是黃色,按照相同的邏輯)。 反過來也是如此。
因此,您可以從一組或另一組中獲取項目,但不能同時從兩者中獲取。 我想給你介紹一下,我的小朋友,對稱差異。 給你藍色和綠色,但不是黃色。
>>> 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 中但不在兩者中的元素的集合。
然而,當然,差異是不言自明的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.