Python集合全解析:從基礎到高階應用實戰

一、集合核心特性與創建方法

1.1 集合的本質特征

Python集合(Set)是一種??無序且元素唯一??的容器類型,基于哈希表實現,具有以下核心特性:

  • ??唯一性??:自動過濾重復元素
  • ??無序性??:元素存儲順序與添加順序無關
  • ??可哈希性??:只能包含不可變類型元素(數值、字符串、元組等)
  • ??動態性??:支持元素的增刪操作

1.2 集合創建全攻略

基礎創建方式
# 使用花括號創建
s = {'Python', 98, 5}  # 自動去重
print(s)  # 輸出示例:{98, 'Python', 5}# 使用set()構造函數
s1 = set(range(7))       # 從范圍對象創建 → {0,1,2,3,4,5,6}
s2 = set([1,2,3,4,5,5]) # 列表轉集合 → {1,2,3,4,5}
s3 = set('DATA')         # 字符串轉集合 → {'D','A','T'}
特殊場景處理
empty_set = set()    # 正確空集合創建方式
not_empty = {1,2,3}  # 含元素的集合
dict_confusion = {}  # 這是空字典!
類型轉換技巧
# 元組去重轉換
t = (1,2,2,3)
unique_tuple = set(t)  # → {1,2,3}# 字典鍵提取
d = {'a':1, 'b':2}
keys_set = set(d)      # → {'a','b'}

二、集合操作完全指南

2.1 元素操作三要素

操作類型方法特性說明
添加元素add(x)添加單個元素
update(iter)批量添加可迭代對象
刪除元素remove(x)存在則刪除,否則KeyError
discard(x)存在則刪除,否則靜默處理
pop()隨機刪除并返回元素
clear()清空集合
查詢操作in/not inO(1)時間復雜度查詢

??實戰示例:??

s = {'Python', 98, 5}
s.add(80)                # 添加單個元素
s.update([1,2], {3,4})   # 批量添加列表和集合
s.discard(100)           # 安全刪除不存在元素
if 98 in s:              # 快速存在性檢查s.remove(98)         

2.2 集合關系判斷

# 相等性判斷(無視順序)
set1 = {1,2,3}
set2 = {3,2,1}
print(set1 == set2)  # → True# 子集/超集判斷
A = {1,2}
B = {1,2,3}
print(A.issubset(B))   # → True
print(B.issuperset(A)) # → True# 交集檢測
C = {4,5}
print(A.isdisjoint(C)) # → True(無交集)

2.3 集合運算矩陣

運算類型方法運算符數學符號
并集union()|
交集intersection()&
差集difference()-?
對稱差集symmetric_difference()^?

??運算示例:??

A = {1,2,3}
B = {3,4,5}print(A | B)   # {1,2,3,4,5} → 并集
print(A & B)   # {3}         → 交集 
print(A - B)   # {1,2}       → 差集
print(A ^ B)   # {1,2,4,5}   → 對稱差集

三、高階應用與性能優化

3.1 集合生成式

# 生成10以內的平方數集合
squares = {x?**?2 for x in range(10)}
# → {0,1,4,9,16,25,36,49,64,81}# 帶條件的生成式
even_squares = {x*x for x in range(10) if x%2==0}
# → {0,4,16,36,64}

3.2 實戰應用場景

  • ??數據清洗去重??
raw_data = ['A','B','A','C','B']
clean_set = set(raw_data)  # → {'A','B','C'}
  • ??高效成員檢測?
valid_users = {'user1','user2','admin'}
if input_user in valid_users:grant_access()
  • ??關系數據庫模擬??
# 求選修數學和物理的學生
math_stu = {'Alice','Bob','Charlie'}
physics_stu = {'Bob','David','Alice'}
both_courses = math_stu & physics_stu  # → {'Alice','Bob'}

3.3 性能優化策略

  • ??預轉換策略??
    對頻繁查詢的列表先轉換為集合:
big_list = [...]  # 大數據集
search_set = set(big_list)  # 一次轉換代價
  • ??批量操作優先??
    使用update()代替多次add:
# 低效方式
for item in iterable:s.add(item)# 高效方式
s.update(iterable) 
  • ??選擇合適方法??
    根據需求選擇運算方式:
# 運算符 vs 方法
a | b          # 簡潔運算符
a.union(b)     # 可讀性更強的方法

四、擴展知識:不可變集合

fs = frozenset([1,2,3])  # 創建不可變集合
# fs.add(4)  # 報錯:AttributeError

凍結集合可作為字典鍵值,適用于需要哈希特性的場景

五、總結與資源

本文完整代碼示例已通過Python 3.11驗證,建議結合Jupyter Notebook進行實踐練習。

??集合方法速查表:??

方法描述
add(element)添加單個元素
update(*iterables)批量添加多個元素
remove(element)刪除指定元素(需存在)
discard(element)安全刪除元素
pop()隨機刪除并返回元素
clear()清空集合
copy()淺拷貝

最新技術動態請關注作者:Python×CATIA工業智造??
版權聲明:轉載請保留原文鏈接及作者信息

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/79448.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79448.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79448.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【javascript】競速游戲前端優化:高頻操作與并發請求的解決方案

文章目錄 前言一、性能痛點分析二、核心技術方案1.Web Worker2.Promise高級控制3.智能隊列系統4.游戲化節流設計 三、最佳實踐選擇 前言 在競速類網頁游戲中,玩家高頻點擊與服務器實時交互會引發兩大核心挑戰: 客戶端性能瓶頸:頻繁操作導致…

Linux操作系統系統編程:x86-64架構下的系統調用

在Linux操作系統里,系統編程如同精密儀器的核心部件,掌控著系統運行的關鍵。而 x86-64 架構下的系統調用,更是連接用戶空間程序與內核的關鍵橋梁。你可以把用戶空間的程序想象成一個個 “工匠”,它們有著各式各樣的需求&#xff0…

理解數據湖

目錄 一、數據湖的定義與相關概念 二、數據湖出現的背景 三、數據湖關鍵技術 (一)存儲技術

前端應用開發技術歷程的簡要概覽

前端應用開發技術詳解 一、萌芽期&#xff08;1990s - 2004&#xff09; 技術特征 HTML 3.2 / HTML 4.01 是主流版本。 樣式用 CSS1/CSS2&#xff0c;但大部分樣式寫在 <style> 標簽甚至行內。 動態效果主要通過 JavaScript 控制 DOM&#xff0c;兼容性極差。 代表事…

交換機配置DHCP

交換機配置DHCP 背景先關閉路由器的DHCPconsole口連接到交換機配置交換機 背景 路由器的dhcp分配IP地址變慢&#xff0c;怎么處理 先關閉路由器的DHCP 查看路由器中DHCP地址池范圍; 關閉路由器的DHCP console口連接到交換機 協議Serial端口COMX波特率9600流控無 配置交換機…

解決Flutter項目中Gradle構建Running Gradle task ‘assembleDebug‘卡頓問題的終極指南

解決Flutter項目中Gradle構建Running Gradle task ‘assembleDebug‘卡頓問題的終極指南 前言 在開發Flutter應用時,經常會遇到Gradle構建卡在Running Gradle task assembleDebug階段的問題。本文將分享如何通過配置華為云鏡像和使用自定義腳本下載依賴的方法解決這些問題。…

AI驅動文字冒險游戲

github地址&#xff1a;https://github.com/thornbsj/ImmenseSimGame 雖然游戲比較簡陋&#xff0c;但是由于筆者不想對游戲做過多的“劇透”&#xff0c;因此本文只粗略講一下大致邏輯以及部分代碼&#xff0c;有興趣的朋友可以看上面的倉庫獲得更詳細的部分。 一、狀態機改…

springboot中有關數據庫信息轉換的處理

現代項目一般都是前后端分離的&#xff0c;前端只負責展示數據&#xff0c;不負責對數據處理&#xff0c;所以所有數據處理工作都由后端進行 比如在仿京東中的status&#xff0c;審核信息展示&#xff0c;數據庫中是以0/1顯示&#xff0c;但是前端需要以"審核/未審核&quo…

提示詞版本化管理:AI開發中被忽視的關鍵環節

當我的提示詞"消失"在團隊協作中 上周五下午&#xff0c;我經歷了一場小型"災難"。作為一名AI產品經理&#xff0c;我花了整整三天精心打磨的客服機器人提示詞&#xff0c;在周末更新后突然"失效"了。機器人不再能夠準確識別用戶意圖&#xff0…

Centos Ubuntu RedOS系統類型下查看系統信息

文章目錄 一、項目背景二、頁面三、說明四、代碼1.SysInfo2.EmsSysConfig3.HostInformationController4.HostInfo 一、項目背景 公司項目想展示當前部署系統的&#xff1a;操作系統&#xff0c;軟件版本、IP、主機名。 二、頁面 三、說明 說明點1&#xff1a;查詢系統類型及…

阿里云自動備份網站,阿里云自動備份網站的方法

阿里云提供了多種自動備份網站的方法&#xff0c;適用于不同場景和需求&#xff0c;用戶可根據自身技術能力和業務要求選擇合適的方案。以下是幾種主流的自動備份方法及操作要點&#xff1a; 一、基于云服務器ECS的自動快照備份 適用場景&#xff1a;適用于基于ECS部署的網站…

輸入輸出(python)

open&#xff08;&#xff09;需要和close&#xff08;&#xff09;配合使用 with open () as 不需要用close&#xff08;&#xff09;函數 在python3.0中的一些變動&#xff1a; eval 是編程語言中用于動態執行字符串形式代碼的內置函數 &#xff0c;名稱源于英文 “evaluate”…

Arduino邏輯控制詳細解答,一點自己的想法記錄

一、邏輯控制的基礎概念與核心語法 1.1 邏輯控制的基本原理 邏輯控制是嵌入式系統中最常見的功能之一,其核心在于通過條件判斷(if-else)、循環(for/while)和布爾運算(&&/||)實現對硬件的精確控制。例如,通過按鍵狀態切換LED亮度、根據傳感器數據調整電機轉速…

字符串的相關方法

1. equals方法的作用 方法介紹 public boolean equals(String s) 比較兩個字符串內容是否相同、區分大小寫 示例代碼 public class StringDemo02 {public static void main(String[] args) {//構造方法的方式得到對象char[] chs {a, b, c};String s1 new String(chs);…

JAVA基礎:Collections 工具類實戰指南-從排序到線程安全

在 Java 開發中&#xff0c;集合類幾乎貫穿每一個項目&#xff0c;而Collections工具類提供了一系列強大的方法&#xff0c;用于操作和增強集合的功能。無論是排序、查找還是線程安全的封裝&#xff0c;Collections工具類都是提升代碼效率和質量的重要工具。 一、Collections …

ReLU函數及其Python實現

ReLU函數及其Python實現 文章目錄 ReLU函數及其Python實現1. ReLU函數定義2. Python實現3. 在深度學習中的應用總結 1. ReLU函數定義 ReLU&#xff08;Rectified Linear Unit&#xff0c;修正線性單元&#xff09;函數是深度學習中常用的激活函數之一。它的定義非常簡單&#…

2505ahk,wmi學習

檢索每個服務的狀態和啟動類型 wbemServices : ComObjGet("winmgmts:\\.") //.代表本地計算機. wbemObjectSet : wbemServices.InstancesOf("Win32_Service")For wbemObject In wbemObjectSetMsgBox, % "Display Name: " wbemObject.DisplayNam…

大語言模型能力評定探討

有標準答案的評估&#xff08;選擇題&#xff09; 評估語言模型能力的基本思路是準備輸入和標準答案&#xff0c;比較不同模型對相同輸入的輸出 由于AI答題有各種各樣答案&#xff0c;因此現在是利用選擇題考察。 有一個知名的選擇題的基準叫做Massive Multitask Language Und…

數字智慧方案5874丨智慧交通收費稽核管理體系的構建與思考(44頁PPT)(文末有下載方式)

資料解讀&#xff1a;智慧交通收費稽核管理體系的構建與思考 詳細資料請看本解讀文章的最后內容。 隨著高速公路收費系統的不斷升級&#xff0c;特別是撤站后的新形勢&#xff0c;收費稽核管理體系的構建顯得尤為重要。本文將對遼寧省在聯網收費新形勢下的收費稽核管理體系進…

3.Java轉義字符

Java轉義字符 轉義字符以\開頭&#xff0c;常見的轉義字符&#xff1a; 轉義字符作用\t &#x1f31f;水平制表符&#xff08;Tab&#xff09;\r &#x1f31f;“回車&#xff08;Carriage Return&#xff09;”\n換行&#xff08;New Line&#xff09;\\輸出一個反斜杠 \\&q…