Python集合的創建

一、前言

在 Python 編程中,集合(set)是一種非常實用的數據結構,它能夠存儲一組無序且不重復的元素。集合廣泛應用于數據去重、交并差運算等場景。

本文將重點講解 Python 中集合的創建方式,包括使用大括號 {}set() 函數、從其他序列轉換等多種方法,并通過豐富的代碼示例幫助你掌握其用法。

二、什么是集合?

? 定義:

集合是 Python 中的一種可變數據類型,表示為 set,用于存儲無序且不重復的元素集合

?? 特點:

  • 元素不可重復
  • 無索引,不能通過下標訪問
  • 支持數學集合操作(如并集、交集、差集)
  • 可動態添加或刪除元素

三、Python 集合的創建方式

? 1. 使用大括號?{}?創建集合

s = {1, 2, 3, 4}
print(s)  # 輸出: {1, 2, 3, 4}

?? 注意事項:

  • 空集合不能用?{},這會創建一個空字典(dict)!
empty_dict = {}       # 空字典
empty_set = set()     # 空集合

? 2. 使用?set()?函數創建集合

這是最常用的方式之一,尤其適用于將其他序列(如列表、字符串、元組)轉換為集合。

示例:
# 從列表轉集合
s1 = set([1, 2, 3, 2])
print(s1)  # 輸出: {1, 2, 3}# 從字符串轉集合
s2 = set("hello")
print(s2)  # 輸出: {'h', 'e', 'l', 'o'}# 從元組轉集合
s3 = set((1, 2, 3, 2))
print(s3)  # 輸出: {1, 2, 3}

? 3. 使用推導式創建集合(Set Comprehension)

類似于列表推導式,集合也支持推導式語法,用于快速生成集合。

示例:
# 生成 0~9 的平方集合
squares = {x**2 for x in range(10)}
print(squares)
# 輸出: {0, 1, 64, 4, 36, 9, 16, 49, 25, 81}

? 4. 從其他集合創建新集合

你可以通過復制、合并等方式創建新的集合。

示例:
a = {1, 2, 3}
b = set(a)  # 復制集合 a
c = a.copy()  # 同樣復制print(b)  # 輸出: {1, 2, 3}
print(c)  # 輸出: {1, 2, 3}

? 5. 使用集合運算創建新集合

可以通過集合運算符或方法來創建新的集合。

a = {1, 2, 3}
b = {3, 4, 5}# 并集
union_set = a | b
print(union_set)  # 輸出: {1, 2, 3, 4, 5}# 交集
intersection_set = a & b
print(intersection_set)  # 輸出: {3}

四、創建集合時的常見問題與注意事項

場景建議
是否可以包含列表?? 不可以,集合中的元素必須是不可變類型(如數字、字符串、元組)
是否可以嵌套集合?? 不允許直接嵌套普通集合(可用?frozenset?替代)
如何判斷是否為空集合?? 使用?not s?或?len(s) == 0
創建集合時順序是否保留?? 集合是無序的,輸出順序可能不同

五、集合與其他數據結構的對比(創建方式)

類型創建方式示例是否可變是否允許重復
列表(list[]?/?list()[1, 2, 3]? 是? 允許
元組(tuple()?/?tuple()(1, 2, 3)? 否? 允許
字典(dict{}?/?dict(){'a': 1, 'b': 2}? 是(值可變)? 鍵不允許重復
集合(setset()?/?{}{1, 2, 3}? 是? 不允許重復

六、實際應用示例

? 示例1:去除列表中的重復項

nums = [1, 2, 2, 3, 4, 4, 5]
unique_nums = list(set(nums))
print(unique_nums)  # 輸出: [1, 2, 3, 4, 5](順序可能變化)

?? 注意:如果需要保留原始順序,應避免使用 set() 直接轉換。

? 示例2:從字符串提取唯一字符

text = "hello world"
unique_chars = set(text.replace(" ", ""))
print(unique_chars)
# 輸出: {'w', 'r', 'd', 'l', 'o', 'h', 'e'}

? 示例3:用戶標簽去重統計

user1_tags = ["python", "web", "data"]
user2_tags = ["java", "web", "mobile"]all_tags = set(user1_tags + user2_tags)
print(all_tags)
# 輸出: {'python', 'web', 'data', 'java', 'mobile'}

七、凍結集合(frozenset)

如果你希望創建一個不可變的集合,可以使用 frozenset()

fs = frozenset([1, 2, 3])
print(fs)  # 輸出: frozenset({1, 2, 3})
fs.add(4)  # 報錯:AttributeError: 'frozenset' object has no attribute 'add'

? 優勢:

  • 可作為字典的鍵
  • 可作為其他集合的元素

八、總結對比表:集合的創建方式

創建方式語法是否推薦說明
使用?{}{1, 2, 3}? 推薦快速創建非空集合
使用?set()set([1, 2, 3])? 推薦更通用,適用于任何可迭代對象
集合推導式{x**2 for x in range(10)}? 推薦快速構造集合
從已有集合復制set(a)?/?a.copy()? 推薦安全地復制集合
使用集合運算`ab/a.union(b)`? 推薦
凍結集合frozenset([1, 2, 3])? 推薦創建不可變集合

九、結語

感謝您的閱讀!如果你有任何疑問或想要分享的經驗,請在評論區留言交流!

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

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

相關文章

作物生長模型Oryza V3實戰15:AutoCalibration程序詳解

ORYZA 模型中的 AutoCalibration (v2.1).exe 是用于 ORYZA 模型參數自動校準的可執行程序,在優化 ORYZA 模型參數、提高模型模擬準確性方面具有重要作用。程序能夠通過特定算法,在給定的參數取值范圍內,自動搜索出一組最優的參數組合,使得模型模擬結果與實際觀測數據(如作…

算法-每日一題(DAY12)最長和諧子序列

1.題目鏈接: 594. 最長和諧子序列 - 力扣(LeetCode) 2.題目描述: 和諧數組是指一個數組里元素的最大值和最小值之間的差別 正好是 1 。 給你一個整數數組 nums ,請你在所有可能的 子序列 中找到最長的和諧子序列的…

阿里云-云效自動部署spring boot項目

1.使用云效通過docker自動部署spring boot項目 1.1 spring boot項目配置 # 阿里云的jdk17鏡像 FROM registry.cn-zhangjiakou.aliyuncs.com/publicci/openjdk:17-jdk-alpineENV APP_HOME /home/admin/app/# 將target/arms-application.jar 復制到容器中 /home/admin/app/app.…

SQL篇 添加約束、刪除約束

SQL篇 添加約束、刪除約束 1、相關鏈接2、約束的增刪找查2.1 查看約束(主鍵、外鍵、唯一性、檢查約束)2.2 查看默認約束2.3 修改約束(添加/編輯/修改)2.3.1 添加主鍵約束2.3.2 添加外鍵約束2.3.3 添加唯一性約束2.3.4 添加檢查約束…

Python PyTorch 深度學習庫 包 timm

文章目錄 📦 主要特點🚀 安裝方式🧪 使用示例示例1:加載一個預訓練模型進行圖像分類示例2:獲取模型結構信息 🌐 官方資源🔍 常見用途? 優勢總結 Timm 是一個非常流行且功能強大的 Python 深度學…

tree 命令集成到 Git Bash:可視化目錄結構的指南

目錄 1. 下載與準備 tree 工具 ??2. 集成 tree 到 Git Bash 環境 ??3. tree 命令基礎用法詳解 ??4. 使用示例 在軟件開發和文件管理中,清晰的目錄結構可視化是提高效率的重要手段。tree命令作為 UNIX/Linux 系統的標準工具,能以樹形結構遞歸展…

如何搭建基于RK3588的邊緣服務器集群?支持12個RK3588云手機

以下是基于RK3588搭建邊緣服務器集群的完整實施方案,涵蓋硬件選型、集群架構、軟件部署及優化要點: 🖥? ?一、硬件集群架構設計? ?節點基礎配置? ?核心單元?:單節點采用RK3588核心板(4A762.4GHz 4A551.8GHz&am…

飛算 JavaAI:我的編程強力助推引擎

文章目錄 引言:當Java開發遇上AI助手初識飛算JavaAI:專為Java而生的智能伴侶安裝與配置:輕松上手的開始核心功能體驗:從需求到代碼的全流程革命1. 智能需求分析與拆解2. 智能接口設計3. 表結構智能生成4. 處理邏輯自動梳理5. 高質…

飛算JavaAI—AI編程助手 | 編程領域的‘高科技指南針’,精準導航開發!

目錄 一、引言 1.1 什么是飛算JavaAI? 1.2 告別"996的孤獨感":AI成為你的編碼搭子 1.3 成就感加速器:從"能運行"到"優雅實現" 1.4 極簡下載體驗:3步開啟"開掛"模式 二、深入體驗飛…

NPM組件 betsson 等竊取主機敏感信息

【高危】NPM組件 betsson 等竊取主機敏感信息 漏洞描述 當用戶安裝受影響版本的 betsson 組件包時會竊取用戶的主機名、用戶名、工作目錄、IP地址等信息并發送到攻擊者可控的服務器地址。 MPS編號MPS-2nrw-lifd處置建議強烈建議修復發現時間2025-06-30投毒倉庫npm投毒類型主…

Apipost 與 Apifox:API 開發管理中的 AI 能力對比

在當今競爭激烈的 API 開發與測試領域,效率與質量是衡量工具優劣的關鍵指標。Apipost 憑借其強大的 AI 功能,為開發者和測試人員帶來了前所未有的便利,而 Apifox 作為該領域的重要參與者,二者在實際應用中究竟有何差異&#xff1f…

Electron 菜單欄深度定制指南:從基礎到高級實踐

在現代桌面應用開發中,菜單欄作為用戶界面的重要組成部分,不僅提供了應用功能的快速訪問途徑,還直接影響著用戶的操作體驗。Electron 作為跨平臺桌面應用開發框架,為開發者提供了強大而靈活的菜單系統定制能力。本文將全面介紹 El…

QML通過XMLHttpRequest實現HTTP通信

轉自個人博客 由于 QML 的 JavaScript 兼容性,我們可以直接使用 JavaScript 的 XMLHttpRequest 對象進行 HTTP 請求。QML 的 XMLHttpRequest 實現與標準瀏覽器的實現非常相似,但有一些限制和特殊行為需要注意。 而QML實現TCP等其他通信一般就需要借助Qt與…

Spring Boot 內置反向代理(Undertow Proxy)高可用配置

引言 在微服務架構中,反向代理是一個不可或缺的組件,它負責請求轉發、負載均衡、安全過濾等關鍵功能。 通常我們會選擇 Nginx、HAProxy 等專業反向代理組件,但在某些場景下,使用 Spring Boot 內置的反向代理功能可以簡化架構&am…

ClickHouse 部署

Docker 部署 1、拉取鏡像 docker pull clickhouse/clickhouse-server:latest單機版本部署 編寫docker-compose.yml version: 3services:clickhouse-server:image: clickhouse/clickhouse-server:22.12container_name: clickhouse-serverports:- "8123:8123"ulimit…

Fiddler中文版抓包工具如何幫助前端開發者高效調試

前端開發早已不再是“寫好頁面就完事”的工作。隨著業務復雜度提升,前端開發者需要直面接口聯調、性能優化、跨域排查、HTTPS調試等一系列和網絡請求緊密相關的任務。抓包工具成為這些環節中不可替代的得力助手,而 Fiddler抓包工具 因其全面的功能和靈活…

WTL 之trunk技術學習

相比于MFC的消息機制,WTL/ATL的實現更加優雅。后者將win32 API與面向對象技術完美地結合起來,去掉了龐雜的MFC依賴,生成的軟件體積更小,運行速度更快。在其中,如何將窗口函數轉變為對窗口對象成員函數的調用&#xff0…

Linux——11.軟件安裝與包管理

Linux 與 Windows 系統在軟件安裝方式上的差異 Linux: Linux 通過 包管理系統(如 Debian 的 apt、Red Hat 的 yum/dnf)將軟件打包為二進制安裝包(如 .deb、.rpm),每個包包含程序文件、依賴關系和元數據。包管理系統負責統一管理軟件的安裝、更新、卸載,并自動處理依賴關…

無人機用shell遠程登錄機載電腦,每次需要環境配置原因

原因: 終端分為“登錄 shell”和“非登錄 shell”: - 登錄 shell(如開機登錄、遠程 SSH 連接)會加載 .profile 或 .bash_profile 。 - 非登錄 shell(如打開新終端窗口)會加載 .bashrc 。 - 如果環境變量…

HarmonyOS5 折疊屏適配測試:驗證APP在展開/折疊狀態下的界面自適應,以及會出現的問題

以下是HarmonyOS5折疊屏應用在展開/折疊狀態下的UI自適應測試方案及技術實現要點: 一、核心測試維度 ?狀態連續性驗證? 頁面滾動位置保持(需通過display.on(foldStatusChange)監聽狀態并保存/恢復滾動位置)輸入內容保留(使用…