Python中frozenset,秒變不可變集合,再也不用擔心多線程了!

目錄

1、Frozenset基礎介紹 ??

1.1 Frozenset定義與創建

1.2 不可變集合特性

1.3 與Set的區別對比

2、Frozenset操作實踐 ??

2.1 初始化與添加元素嘗試

2.2 成員測試: in & not in

2.3 集合運算: 并集、交集、差集

2.4 使用場景示例: 字典鍵、函數參數默認值

2.5 frozenset轉換技巧

3、Frozenset進階應用 ??

3.1 Hashable特性與字典鍵優化

3.2 并發安全與多線程環境

3.3 序列化與數據交換安全

4、性能考量與最佳實踐 ??

4.1 Frozenset內存占用分析

4.2 操作效率比較

4.3 適用場景討論

5、實戰演練:Frozenset解決實際問題 ??

5.1 數據庫去重索引構建

5.2 并發編程數據同步

5.3 JSON序列化特殊處理

6、總結與展望 ??



1、Frozenset基礎介紹 ??

1.1 Frozenset定義與創建

在Python中,frozenset是一種不可變的集合數據類型 ,意味著一旦創建,其內容就不能被修改。它繼承了集合(set)的所有特性,如無序性、唯一性,但不具備添加或刪除元素的能力。創建frozenset可以通過直接將一個可迭代對象傳遞給frozenset()構造函數來完成。

# 創建frozenset實例
immutable_set = frozenset([1, 2, 3])
print(immutable_set)  # 輸出: frozenset({1, 2, 3})

1.2 不可變集合特性

由于frozenset的不可變性,它成為了哈希表的理想鍵值類型 ,因為哈希表的鍵要求是不可變且可哈希的。這意味著你可以將frozenset用作字典的鍵,而普通的set則不行。

# 使用frozenset作為字典鍵
dict_example = {frozenset([1, 2]): 'Tuple', frozenset(['a', 'b']): 'List'}
print(dict_example[frozenset([1, 2])])  # 輸出: Tuple

1.3 與Set的區別對比

盡管frozensetset在功能上相似,但它們的主要區別在于可變性:

  • Set:是可變集合,允許添加(add)、刪除(remove)元素以及執行其他修改操作。

  • Frozenset:是不可變集合,不支持任何改變其內容的操作,但支持集合運算如并集(union)、交集(intersection)等,并且可以被用作字典的鍵或作為集合成員。

通過下面的例子,可以直觀地看到兩者的差異:

mutable_set = set([1, 2, 3])
mutable_set.add(4)  # 合法操作
print(mutable_set)  # 輸出: {1, 2, 3, 4}try:immutable_set.add(4)  # 這會引發TypeError
except AttributeError as e:print(e)  # 輸出: 'frozenset' object has no attribute 'add'

通過上述內容,我們深入探討了frozenset的基本概念、其不可變性特質以及與常規set的區別,為理解和運用這一數據結構奠定了堅實的基礎。接下來的章節將進一步探索其高級應用與性能考量。

2、Frozenset操作實踐 ??

2.1 初始化與添加元素嘗試

雖然frozenset不允許添加或刪除元素,我們可以通過創建新的frozenset來模擬添加或移除元素的效果。首先,讓我們嘗試初始化一個frozenset并觀察當嘗試修改時會發生什么。

# 初始化frozenset
my_frozenset = frozenset([1, 2, 3])
print(my_frozenset)  # 輸出: frozenset({1, 2, 3})# 嘗試添加元素,這將失敗
try:my_frozenset.add(4)
except AttributeError as e:print("錯誤:", e)  # 輸出: 錯誤: 'frozenset' object has no attribute 'add'

2.2 成員測試: in & not in

frozenset支持快速的成員測試,這對于判斷一個元素是否存在于集合中非常有用。

# 成員測試
print(2 in my_frozenset)  # 輸出: True
print(4 not in my_frozenset)  # 輸出: True

2.3 集合運算: 并集、交集、差集

frozenset支持標準的集合運算,包括并集(union)、交集(intersection)和差集(difference)。

another_set = frozenset([3, 4, 5])# 并集
union_result = my_frozenset.union(another_set)
print(union_result)  # 輸出: frozens

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

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

相關文章

登錄設計(實戰項目)-1個手機號多用戶身份登錄

一. 背景: 該需求是一個互聯網醫院的預約單場景,護士在小程序上申請患者查房預約單,醫生在小程序上對預約單進行接單,護士開始查房后填寫查房小結,客戶需要對用戶信息進行授權,醫生查房后進行簽字&#xff…

勁爆!華為享界兩款新車曝光,等等黨有福了

文 | AUTO芯球 作者 | 雷慢 勁爆啊,北汽的一份環境影響分析報告, 不僅曝光了享界S9的生產進展, 還泄露了自家的另兩款產品, 第一款是和享界S9同尺寸的旅行車, 我一看,這不是我最喜歡的“瓦罐”嗎&…

v-html 空格/換行不生效

接口返回的內容如下&#xff1a;有空格有換行&#xff0c;但 使用v-html無效 需加css樣式 white-space: pre-wrap; <div class"pretty-html" v-html"Value"></div>.pretty-html {white-space: pre-wrap; /* 保留空格和換行&#xff0c;并允許…

掌握麥肯錫精英的6個技巧,你也能成為1%的精英!

不知道大家有沒有想過&#xff0c;我們和那些全球頂尖精英的差距可能只有1%&#xff0c;只是99%的人還不知道這件事。 今天給大家推薦一本好書&#xff0c;《你和麥肯錫精英的差別只有1%》。優思學院發現&#xff0c;在我們的六西格瑪、精益管理的學生中很多人對自己沒有自信。…

軟通動力子公司鴻湖萬聯最新成果SwanLink AI亮相世界人工智能大會

7月4日&#xff0c;2024世界人工智能大會暨人工智能全球治理高級別會議&#xff08;WAIC 2024&#xff09;在上海拉開帷幕&#xff0c;軟通動力董事長兼首席執行官劉天文受邀出席開幕式。其間&#xff0c;軟通動力攜子公司鴻湖萬聯深度參與到大會各項活動中&#xff0c;并全面展…

C語言_結構體初階(還未寫完)

結構體的聲明 1. 什么是結構&#xff1f;結構是一些值的集合&#xff0c;這些值稱為成員變量。結構的每個成員可以是不同類型的變量 數組&#xff1a;一組相同類型元素的集合 結構體&#xff1a;一組不一定相同類型元素的集 2. 結構的聲明 struct tag //tag根據實際情況給名字…

Spring注解@Qualifier

Autowired 注解是 Spring 依賴注入。但是有些場景下僅僅靠這個注解不足以讓Spring知道到底要注入哪個 bean。 默認情況下&#xff0c;Autowired 按類型裝配 Spring Bean。 如果容器中有多個相同類型的 bean&#xff0c;則框架將拋出 NoUniqueBeanDefinitionException&#xff0…

數字化產科管理平臺全套源碼,java產科電子病歷系統源碼

數字化產科管理平臺全套成品源碼&#xff0c;產科電子病歷系統源碼&#xff0c;多家大型婦幼專科醫院應用案例。源碼完全授權交付。 數字化產科管理平臺&#xff08;智慧產科系統&#xff09;是為醫院產科量身定制的信息管理系統。它管理了孕婦從懷孕開始到生產結束42天以內的一…

數據庫MySQL學習筆記

數據庫MySQL學習筆記 主要記錄常見的MySQL語句學習過程&#xff0c;增刪改查。 -- 顯示所有數據庫 SHOW DATABASES;-- 創建新數據庫 CREATE DATABASE mydatabase;-- 使用數據庫 USE mydatabase;-- 顯示當前數據庫中的所有表 SHOW TABLES;-- 創建新表 CREATE TABLE users (id …

BERT--學習

一、Transformer Transformer&#xff0c;是由編碼塊和解碼塊兩部分組成&#xff0c;其中編碼塊由多個編碼器組成&#xff0c;解碼塊同樣也是由多個解碼塊組成。 編碼器&#xff1a;自注意力 全連接 多頭自注意力&#xff1a;Q、K、V 公式&#xff1a; 解碼塊&#xff1…

【Hive實戰】 HiveMetaStore的指標分析

HiveMetaStore的指標分析&#xff08;一&#xff09; 文章目錄 HiveMetaStore的指標分析&#xff08;一&#xff09;背景目標部署架構 hive-site.xml相關配置元數據服務的指標相關配置 源碼部分&#xff08;hive2.3系&#xff09;JvmPauseMonitor.javaHiveMetaStore的內部類HMS…

【anaconda】—“conda info“命令后conda配置和環境信息的理解

文章目錄 conda配置和環境信息的理解 conda配置和環境信息的理解 安裝anaconda成功后&#xff0c;打開cmd&#xff0c;輸入"conda info"命令&#xff0c;結果顯示如下&#xff1a; conda的配置和環境信息的輸出。以下是對每個字段的解釋&#xff1a; active environm…

H2 Database Console未授權訪問漏洞封堵

背景 H2 Database Console未授權訪問&#xff0c;默認情況下自動創建不存在的數據庫&#xff0c;從而導致未授權訪問。各種未授權訪問的教程&#xff0c;但是它怎么封堵呢&#xff1f; -ifExists 很簡單&#xff0c;啟動參數添加 -ifExists &#xff0c;它的含義&#xff1a…

中電金信:加快企業 AI 平臺升級,構建金融智能業務新引擎

在當今數字化時代的浪潮下&#xff0c;人工智能&#xff08;AI&#xff09;技術的蓬勃發展正為各行業帶來前所未有的變革與創新契機。尤其是在金融領域&#xff0c;AI 模型的廣泛應用已然成為提升競爭力、優化業務流程以及實現智能化轉型的關鍵驅動力。然而&#xff0c;企業在積…

【C++ 】解決 C++ 語言報錯:Null Pointer Dereferenc

文章目錄 引言 在 C 編程中&#xff0c;空指針解引用&#xff08;Null Pointer Dereference&#xff09;是一種常見且危險的錯誤。當程序試圖通過空指針訪問內存時&#xff0c;會導致程序崩潰或產生不可預期的行為。本文將詳細探討空指針解引用的成因、檢測方法及其預防和解決…

微信新寵!淘寶扭蛋機小程序,讓購物更添樂趣

在移動互聯網飛速發展的今天&#xff0c;微信小程序以其便捷性、即用即走的特點&#xff0c;迅速成為了用戶日常生活中不可或缺的一部分。而在眾多小程序中&#xff0c;一款名為“淘寶扭蛋機”的新晉“網紅”&#xff0c;正以其獨特的玩法和豐富的驚喜&#xff0c;為購物體驗增…

【Hive實戰】HiveMetaStore的指標采集告警

HiveMetaStore的指標采集告警 文章目錄 HiveMetaStore的指標采集告警背景部署概要圖 開啟HiveMetaStore的JMX指標采集&#xff08;Hadoop2指標系統&#xff09;指標監控查詢指標核心指標選擇告警 遺留問題 背景 在遠程模式的Metastore下&#xff0c;對其開啟Hadoop2指標采集以…

簡單配置VScode輕量級C++競賽環境

1. 安裝拓展 Chinese是中文&#xff0c;需要重啟才可以運行&#xff0c;C/C拓展只是進行語法代碼提示&#xff0c;不需要進行任何配置修改&#xff0c;默認即可。 2. 創建文件 如上圖創建好各級文件夾&#xff0c;其中C是工作文件夾&#xff0c;.vscode是配置文件夾&#xff0…

【網絡安全】Host碰撞漏洞原理+工具+腳本

文章目錄 漏洞原理虛擬主機配置Host頭部字段Host碰撞漏洞漏洞場景工具漏洞原理 Host 碰撞漏洞,也稱為主機名沖突漏洞,是一種網絡攻擊手段。常見危害有:繞過訪問控制,通過公網訪問一些未經授權的資源等。 虛擬主機配置 在Web服務器(如Nginx或Apache)上,多個網站可以共…

學習測試2-方法

設計測試用例 設計測試用例的萬能公式 (在沒有需求文檔的情況下&#xff09; 軟件質量模型 效率就是性能 兼容性測試 瀏覽器 谷歌 IE 火狐 蘋果 百度 Windows7 10 11 蘋果系統 app 不同品牌 小米 vivo 華為 蘋果 不同的操作系統 安卓 鴻蒙 蘋果 -----------------------…