萌新學 Python 之集合 set

集合 set:使用一對大括號,元素寫在大括號之間,使用逗號分隔

集合中的元素只能是不可變的數據類型,不能是列表、字典和集合

set1 = {1, 2, 3}
set2 = {1, 'a', (1, 2, 3)}
print(type(set1), type(set2))  # <class 'set'> <class 'set'>
print(set1, set2)  # {1, 2, 3} {1, 'a', (1, 2, 3)}

集合自動去重且無序

set3 = {3, 3, 2, 2, 1, 1}
print(set3)        # {1, 2, 3}

集合需要注意以下幾點:

1.集合屬于可變的數據類型

2.集合有去重功能,對元素自動去重

3.集合的元素只能是不可變的類型(數值、字符串、元組),不能使用列表、字典、集合

4.集合 set 與字典 map,都是以 hash 值分布存儲,是無序的數據結構

5.空集合不能直接使用一對大括號,空字典才使用 { }

可以使用 set 創建集合

格式:set(可迭代對象)

對象為字典,獲取字典的鍵 key

set4 = set()
print(type(set4), set4)       # <class 'set'> set()# 對象為字符串,去重且無序
set5 = set('Hello')
print(type(set5), set5)       # <class 'set'> {'H', 'o', 'l', 'e'}# 對象為列表、元組、集合
set6 = set((1, 2))
print(type(set6), set6)       # <class 'set'> {1, 2}# 對象為字典,獲取字典的鍵key
set7 = set({'name': 'zhangsan', 'age': 18})
print(type(set7), set7)       # <class 'set'> {'name', 'age'}

集合的運算與運算符:

交集 &? ? ?并集 |? ? ?補集 ^? ? ?差集 -

交集 &?,返回兩個集合中出現相同的元素,intersection

并集 |?,返回兩個集合的全部元素,union

補集 ^?,返回兩個集合中不同的元素,symmetric_difference

差集 -?,對兩個集合進行減法運算,difference

# 交集 &,返回兩個集合中出現相同的元素
s1 = {1, 2, 3, 4, 5}
s2 = {1, 2, 3, 8, 9}
print(s1 & s2)                # {1, 2, 3}
print(s1.intersection(s2))    # {1, 2, 3}# 并集 |,返回兩個集合的全部元素
s3 = {1, 2, 3}
s4 = {2, 3, 4}
print(s3 | s4)         # {1, 2, 3, 4}  集合去重
print(s3.union(s4))    # {1, 2, 3, 4}# 補集 ^,返回兩個集合中不同的元素
s5 = {1, 2, 3, 4, 5}
s6 = {1, 2, 3}
print(s5 ^ s6)                           # {4, 5}
print(s5.symmetric_difference(s6))       # {4, 5}# 差集 -,對兩個集合進行減法運算
s7 = {1, 2, 3, 4, 5}
s8 = {4, 5, 6, 7, 8}
print(s7 - s8)               # {1, 2, 3}
print(s7.difference(s8))     # {1, 2, 3}
print(s8 - s7)               # {8, 6, 7}   集合無序
print(s8.difference(s7))     # {8, 6, 7}

集合更新 update:原集合上更新新集合

集合 1.intersection_update(集合 2),把交集后的元素更新到集合 1 中

集合 1.update(集合 2),把并集后的元素更新到集合 1 中

集合 1.symmetric_difference_update(集合 2),把補集后的元素更新到集合 1 中

集合 1.difference_update(集合 2),把差集后的元素更新到集合 1 中

# 交集更新
set8 = {1, 2, 3}
set9 = {3, 4, 5}
set8.intersection_update(set9)
print(set8)      # {3}# 并集更新
set8 = {1, 2, 3}
set9 = {3, 4, 5}
set8.update(set9)
print(set8)      # {1, 2, 3, 4, 5}# 補集更新
set8 = {1, 2, 3}
set9 = {3, 4, 5}
set8.symmetric_difference_update(set9)
print(set8)     # {1, 2, 4, 5}# 差集更新
set8 = {1, 2, 3}
set9 = {3, 4, 5}
set8.difference_update(set9)
print(set8)    # {1, 2}

集合增加元素:add(元素)

集合增加的元素只能是不可變的數據類型,比如數值、字符串和元組

不能是列表、字典這些可變的數據類型,否則會報錯

set10 = set()      # 空集合
set10.add(1)
set10.add('a')
set10.add((1, 'a'))
print(set10)       # {(1, 'a'), 1, 'a'}

集合元素的刪除:

1. pop(),隨機刪除

2. remove(指定元素),刪除指定元素,元素不存在則報錯

set11 = {1, 'a', 2, 'b'}
# remove(指定元素) 刪除
print(set11.remove('b'))       # None
print(set11)                   # {1, 2, 'a'}

3. clear(),清空集合的元素,返回空集合

set11 = {1, 'a', 2, 'b'}
# clear(),清空集合的元素,返回空集合
set11.clear()
print(set11)          # set()

4. discard(指定元素),刪除指定元素,元素不存在,不會報錯

set11 = {1, 'a', 2, 'b'}
# discard(指定元素),元素不存在,不會報錯
print(set11.discard('c'))     # None
print(set11)                  # {1, 2, 'a', 'b'}

is 開頭的函數用來做判斷,結果返回布爾值 True、False

集合 1.issubset(集合 2),判斷集合 1 是否是集合 2 的子集,如果是返回 True,不是則返回 False

集合 1.issuperset(集合 2),判斷集合 2 是否是集合 1 的子集,如果是返回 True,不是則返回 False

集合 1.isdisjoint(集合 2),判斷兩個集合是否有相同的元素,有相同元素返回 False,沒有相同元素返回 True

set12 = {1, 2, 3}
set13 = {1, 2, 3, 4, 5}
# 集合1.issubset(集合2),判斷集合 1 是否是集合 2 的子集
print(set12.issubset(set13))     # True# 集合1.issuperset(集合2),判斷集合 2 是否是集合 1 的子集
print(set13.issuperset(set12))   # True# 集合1.isdisjoint(集合2),判斷兩個集合是否有相同的元素,有相同元素返回 False,沒有相同元素返回 True
print(set12.isdisjoint(set13))   # False

copy 淺拷貝:

set14 = {1, 2, 3, 4, 5}
set15 = set14.copy()
print(set14, id(set14))    # {1, 2, 3, 4, 5} 2100890355520
print(set15, id(set15))    # {1, 2, 3, 4, 5} 2100890355744
print(set14 is set15)      # False

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

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

相關文章

python中使用數據庫sqlite3

Python使用sqlite3數據庫 python3.x標準庫內置了SQLite3 查看sqlite的版本 import sqlite3 sqlite_version sqlite3.sqlite_version print(f"SQLite version: {sqlite_version}") 顯示 導入模塊連接sqlitte3 import sqlite3 consqlite3.connect("d:/fi…

maven使用默認settings.xml配置時,Idea基于pom.xml更新依賴時報錯,有些組件下載時連接超時

1、問題背景&#xff1a;maven使用默認settings.xml配置時&#xff0c;Idea基于pom.xml更新依賴時報錯&#xff0c;有些組件下載時連接超時&#xff0c; 通過日志發下&#xff0c;去連接maven.org網站下載依賴&#xff0c;有時候肯定會超時。 2、解決辦法&#xff1a;使用國外…

小狐貍ai3.1.2版本源碼無授權版本內 含搭建教程+各種上線教程

內容目錄 一、詳細介紹小狐貍3.1.2版本源碼&#xff0c;新增deepseek接口 文件夾說明&#xff1a; 1、后端&#xff1a;文件夾是后臺文件 5、.sql文件是數據庫文件后臺安裝步驟&#xff1a; 1、在寶塔新建個站點&#xff0c;php版本使用7.4&#xff0c;將“后端”文件夾里的文件…

C#之上位機開發---------C#通信庫及WPF的簡單實踐

〇、上位機&#xff0c;分層架構 界面層 要實現的功能&#xff1a; 展示數據 獲取數據 發送數據 數據層 要實現的功能&#xff1a; 轉換數據 打包數據 存取數據 通信層 要實現的功能&#xff1a; 打開連接 關閉連接 讀取數據 寫入數據 實體類 作用&#xff1a; 封裝數據…

Python Django 入門教程

Django 構建一個完整的博客平臺,包含用戶認證、評論、權限控制等功能。 環境搭建 安裝依賴 先確保已經安裝了 Python 環境,并通過 pip 安裝 Django 及其它依賴: pip install django pip install djangorestframework創建項目和應用 創建一個 Django 項目并進入該項目目錄:…

今日行情明日機會——20250217

2025年02月17日行情 后續投資機會分析 根據最新盤面信息&#xff0c;以下板塊和個股具備潛在投資機會&#xff0c;需結合市場動態和基本面進一步驗證&#xff1a; 1. 騰訊系AI&#xff08;18家漲停&#xff09; 核心邏輯&#xff1a;漲停家數最多&#xff08;18家&#xff0…

常見的IP地址分配方式有幾種:深入剖析與適用場景?

在數字互聯的世界里&#xff0c;IP地址如同網絡世界的“門牌號”&#xff0c;是設備間通信的基礎。隨著網絡技術的飛速發展&#xff0c;IP地址的分配方式也日趨多樣化&#xff0c;以適應不同規模、不同需求的網絡環境。本文將深入探討當前主流的幾種IP地址分配方式&#xff0c;…

快速搭建 OLLAMA + DeepSeek 模型并對接 Cherry Studio

快速搭建 OLLAMA DeepSeek 模型并對接 Cherry Studio 本文將指導您在基于 GPU 的 Ubuntu 服務器上快速搭建 OLLAMA&#xff0c;部署 DeepSeek 模型&#xff0c;并接入 Cherry Studio 進行使用。 環境說明 GPU 服務器: GeForce RTX 2080 Ti, 16 核, 64G 內存系統: Ubuntu 24.…

floodfill算法系列一>掃雷游戲

目錄 題目思路&#xff1a;代碼設計&#xff1a;代碼呈現&#xff1a; 題目思路&#xff1a; 代碼設計&#xff1a; 代碼呈現&#xff1a; class Solution {int m,n;int[] dx {0,0,-1,1,-1,-1,1,1};int[] dy {-1,1,0,0,-1,1,-1,1};public char[][] updateBoard(char[][] boa…

Java 中操作文件

文章目錄 Java 中操作文件File 概述屬性構造方法方法代碼示例文件內容的讀寫--數據流InputStream 概述常用方法FileInputStream 概述構造方法常用方法代碼示例通過 Scanner 進行字符讀取FileReaderOutputStream 概述常用方法FileOutputStream 概述構造方法常用方法代碼示例File…

什么是RDD以及它在Spark中的作用

RDD&#xff08;Resilient Distributed Dataset&#xff09;&#xff0c;即彈性分布式數據集&#xff0c;是Spark中最基本的數據抽象。以下是對RDD的詳細解釋以及它在Spark中的作用&#xff1a; 一、RDD的定義與特性 定義&#xff1a; RDD是一個不可變、可分區、里面的元素可并…

【附帶腳本】解決notion加載慢問題

問題原因 notion網站的服務器在國外&#xff0c;因為網絡問題&#xff08;國際出口帶寬限制&#xff09;導致訪問速度較慢和域名解析延遲等問題。 解決方案 通過在 hosts 文件中直接指定一個更快的 IP 地址&#xff08;例如國內鏡像服務器&#xff09;&#xff0c;可以顯著提…

Banana Pi OpenWRT One 官方路由器的第一印象

OpenWRT One是OpenWRT開源社區推出的首款官方開發板&#xff0c;與Banana Pi社區共同設計&#xff0c;由Banana Pi制造和發行。路由器采用藍色鋁合金外殼&#xff0c;質感極佳&#xff0c;視覺效果遠超宣傳圖。整體設計簡潔&#xff0c;呈長方形&#xff0c;雖然不是特別時尚&a…

【信息學奧賽一本通 C++題解】1285:最大上升子序列和

信息學奧賽一本通&#xff08;C版&#xff09;在線評測系統 基礎算法 第一節 動態規劃的基本模型 1285&#xff1a;最大上升子序列和 “最大上升子序列和”問題課堂講解 1. 理解題意 同學們&#xff0c;想象我們有一串數字&#xff0c;就像一串彩色的珠子&#xff0c;每個珠子…

刷題記錄Day4(補)

24. 兩兩交換鏈表中的節點 ① 使用虛擬節點 ② 最后返回頭結點的時候&#xff0c;head 本來的頭節點已經和第二位交換了&#xff0c;需要重新賦值 ③ 使用臨時指針保存變量 ④ 如果是空的不用特殊判斷&#xff0c;空的返回頭節點也還是空的 class Solution { public:ListNo…

花西子攜手賽博威共創新品創新平臺,驅動“新質美力”高質量發展

國貨彩妝品牌花西子與賽博威信息科技達成【新品創新平臺】項目合作&#xff0c;共探“新質美力”的高質量發展路徑。 近日&#xff0c;賽博威信息科技CEO陳國平攜團隊走進花西子“百年之詩”館&#xff0c;深入了解花西子的品牌理念、企業文化及百年愿景&#xff0c;并與花西子…

[JVM篇]垃圾回收器

垃圾回收器 Serial Seral Old PartNew CMS(Concurrent Mark Sweep) Parallel Scavenge Parallel Old G1 ZGC

在VScode內接入deepseek(本地部署版包會)

目錄 1. 首先得有vscode軟件 2. 在我們的電腦本地已經部署了ollama&#xff0c;我將以qwen作為實驗例子 3. 在vscode上的擴展商店下載continue 4. 下載完成后&#xff0c;依次點擊添加模型 5. 在這里可以添加&#xff0c;各種各樣的模型&#xff0c;選擇我們的ollama 6. 選…

[題解]2024CCPC重慶站-小 C 的神秘圖形

Sources&#xff1a;K - 小 C 的神秘圖形Abstract&#xff1a;給定正整數 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le 10^5) n(1≤n≤105)&#xff0c;三進制字符串 n 1 , n 2 ( ∣ n 1 ∣ ∣ n 2 ∣ n ) n_1,n_2(|n_1||n_2|n) n1?,n2?(∣n1?∣∣n2?∣n)&#xff0c;按如下方法…

AI外呼機器人:營銷新利器還是騷擾電話的升級版?

"您好&#xff0c;這里是XX房產&#xff0c;最近有購房需求嗎&#xff1f;""您好&#xff0c;您最近有種牙需求嗎&#xff1f;" 相信很多人都接到過類似的營銷電話&#xff0c;而電話那頭&#xff0c;很可能已經不是真人&#xff0c;而是AI外呼機器人。 近…