[英]Set difference versus set subtraction
集合上的-
和.difference()
有何區別? 顯然語法不一樣,一個是二元運算符,一個是實例方法。 還有什么?
s1 = set([1,2,3])
s2 = set([3,4,5])
>>> s1 - s2
set([1, 2])
>>> s1.difference(s2)
set([1, 2])
set.difference, set.union...
可以將任何可迭代對象作為第二個參數,而兩者都需要設置為使用-
,輸出沒有區別。
Operation Equivalent Result
s.difference(t) s - t new set with elements in s but not in t
使用 .difference 您可以執行以下操作:
s1 = set([1,2,3])
print(s1.difference(*[[3],[4],[5]]))
{1, 2}
使用*(iterable,iterable)
語法創建集合時也更有效*(iterable,iterable)
因為您不創建中間集合,您可以在此處查看一些比較
快速瀏覽一下, 文檔中可能不太明顯,但埋藏在一個段落深處,專門用於區分方法調用與操作符版本
請注意,union()、intersection()、difference() 和 symmetric_difference()、issubset() 和 issuperset() 方法的非運算符版本將接受任何可迭代對象作為參數。 相比之下,它們的基於運算符的對應物需要設置它們的參數。 這排除了像
set('abc') & 'cbs'
這樣容易出錯的結構,取而代之的是更具可讀性的set('abc').intersection('cbs')
。
該文檔似乎表明差異可能需要多組,因此對於以下內容可能更有效和更清晰:
s1 = set([1, 2, 3, 4])
s2 = set([2, 5])
s3 = set([3, 6])
s1.difference(s2, s3) # instead of s1 - s2 - s3
但我建議進行一些測試來驗證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.