簡體   English   中英

Python 集:difference() 與 symmetric_difference()

[英]Python sets: difference() vs symmetric_difference()

python集合中的difference()symmetric_difference()方法有什么區別?

對稱差

如果AB是集合

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 - BB - 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}

不對稱差異取決於您對ab ,或者您比較它們的順序。 以一種方式看待你得到一件事,以不同的方式看待你得到不同的東西。 根據定義,不對稱差異並不關心您如何看待它。

筆記。 這與 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM