最近中文字幕国语免费完整,中文亚洲无线码49vv,中文无码热在线视频,亚洲自偷自拍熟女另类,中文字幕高清av在线

當前位置: 首頁 > 技術(shù)教程

Python中的集合運算有哪些? 交集、并集如何實現(xiàn)?

  在 Python 數(shù)據(jù)處理中,集合(set)是一種無序、不重復的可變?nèi)萜鳎瑢?“元素唯一性判斷” 與 “集合間關(guān)系計算” 設計。無論是去重、篩選共同元素,還是合并數(shù)據(jù),集合運算都能提供高效簡潔的解決方案。小編將梳理 Python 集合的 6 類核心運算,重點解析交集、并集的實現(xiàn)方法,助你快速掌握集合在實際開發(fā)中的應用。

  一、集合的核心特性:為何適合運算?

  在學習運算前,需先明確集合的兩大關(guān)鍵特性,這是其高效運算的基礎:

  元素唯一性:集合自動去重,同一元素在集合中僅出現(xiàn)一次(如{1,2,2,3}會自動變?yōu)閧1,2,3}),無需手動處理重復數(shù)據(jù);

  無序性:集合不記錄元素插入順序,也不支持索引訪問(如set1[0]會報錯),但底層采用哈希表實現(xiàn),判斷元素是否存在(in操作)的時間復雜度為 O (1),遠快于列表的 O (n)。

  正因為這些特性,集合在 “去重”“關(guān)系判斷” 場景中效率顯著,例如篩選兩個列表的共同元素、合并多個數(shù)據(jù)集并去重等。

python3.png

  二、Python 集合的 6 類核心運算

  Python 集合支持數(shù)學意義上的集合運算,包括交集、并集、差集、對稱差集等,每種運算均提供 “運算符” 與 “內(nèi)置方法” 兩種實現(xiàn)方式,可根據(jù)代碼可讀性需求選擇。

  (一)交集:取兩個集合的共同元素

  定義:返回同時存在于兩個集合中的所有元素,數(shù)學符號為 “∩”。

  適用場景:篩選兩個數(shù)據(jù)集的重疊部分,如 “找出同時購買 A 商品與 B 商品的用戶 ID”。

  實現(xiàn)方式:

  運算符&:直接用set1 & set2計算交集,結(jié)果為新集合;

  內(nèi)置方法intersection():調(diào)用set1.intersection(set2),支持傳入多個集合(如set1.intersection(set2, set3)取三個集合的共同元素)。

  示例:

  TypeScript取消自動換行復制

  # 定義兩個用戶集合(存儲用戶ID)

  users_a = {101, 102, 103, 104} # 購買A商品的用戶

  users_b = {103, 104, 105, 106} # 購買B商品的用戶

  # 方法1:用&運算符求交集

  common_users1 = users_a & users_b

  print(common_users1) # 輸出:{103, 104}

  # 方法2:用intersection()方法求交集

  common_users2 = users_a.intersection(users_b)

  print(common_users2) # 輸出:{103, 104}

  # 擴展:求三個集合的交集

  users_c = {104, 105, 107}

  common_three = users_a.intersection(users_b, users_c)

  print(common_three) # 輸出:{104}

  (二)并集:合并兩個集合并去重

  定義:返回兩個集合中所有不重復的元素,數(shù)學符號為 “∪”。

  適用場景:合并多個數(shù)據(jù)集并自動去重,如 “匯總 A、B 兩個渠道的用戶 ID,避免重復統(tǒng)計”。

  實現(xiàn)方式:

  運算符|:用set1 | set2合并集合,自動去重;

  內(nèi)置方法union():調(diào)用set1.union(set2),同樣支持傳入多個集合。

  示例:

  TypeScript取消自動換行復制

  # 定義兩個渠道的用戶集合

  channel_x = {201, 202, 203}

  channel_y = {203, 204, 205}

  # 方法1:用|運算符求并集

  total_users1 = channel_x | channel_y

  print(total_users1) # 輸出:{201, 202, 203, 204, 205}(自動去重203)

  # 方法2:用union()方法求并集

  total_users2 = channel_x.union(channel_y)

  print(total_users2) # 輸出:{201, 202, 203, 204, 205}

  (三)其他常用集合運算

  除交集、并集外,以下 4 類運算也高頻使用:

  差集:返回僅在第一個集合中存在的元素,用-運算符或difference()方法實現(xiàn)(如users_a - users_b,輸出{101, 102});

  對稱差集:返回僅在其中一個集合中存在的元素(即 “并集減交集”),用^運算符或symmetric_difference()方法實現(xiàn)(如users_a ^ users_b,輸出{101, 102, 105, 106});

  子集判斷:判斷集合 A 是否完全包含于集合 B,用<=運算符或issubset()方法(如{103,104} <= users_a,輸出True);

  超集判斷:判斷集合 A 是否完全包含集合 B,用>=運算符或issuperset()方法(如users_a >= {103,104},輸出True)。

  三、集合運算的注意事項

  數(shù)據(jù)類型限制:集合的元素必須是 “可哈希” 類型(如整數(shù)、字符串、元組),列表、字典等不可哈希類型不能作為集合元素(如{[1,2], 3}會報錯);

  運算結(jié)果為新集合:所有集合運算(如&、|、intersection())均返回新集合,不會修改原集合。若需直接修改原集合,可使用 “增強運算符” 或?qū)?“更新方法”,例如:

  交集更新:set1 &= set2(等價于set1.intersection_update(set2)),直接修改set1為交集結(jié)果;

  并集更新:set1 |= set2(等價于set1.update(set2)),直接將set2的元素合并到set1中并去重;

  空集合的創(chuàng)建:不能用{}創(chuàng)建空集合({}表示空字典),需用set()創(chuàng)建(如empty_set = set())。

  Python 集合運算以 “高效、簡潔” 為核心優(yōu)勢,其中交集(&/intersection())與并集(|/union())是最常用的兩種運算,分別適用于 “篩選共同元素” 與 “合并去重” 場景。實際開發(fā)中,需根據(jù)代碼可讀性選擇實現(xiàn)方式(運算符更簡潔,方法更直觀),同時注意集合元素的可哈希性與空集合的創(chuàng)建方式。

 


猜你喜歡