Python 学习笔记:集合(Set)

一、概述

集合(Set)是 Python 中的一种内置数据结构,主要用于存储唯一的元素。集合的主要特点包括:

  • 无序性:集合中的元素没有固定的顺序,不能通过索引访问。
  • 唯一性:集合中的每个元素都是唯一的,不能重复。
  • 可变性:集合是可变的,可以动态添加、删除元素。

集合通常用于数据去重、数学集合运算(如并集、交集等)以及高效查找数据。

二、集合的创建

集合可以通过花括号 {}set() 函数来创建。需要注意的是,空集合只能用 set() 函数创建,而使用 {} 创建的是一个空字典。

示例

# 使用花括号创建集合
my_set = {1, 2, 3, 4}
print(my_set)  # 输出: {1, 2, 3, 4}# 使用 set() 函数创建集合
another_set = set([1, 2, 3])
print(another_set)  # 输出: {1, 2, 3}# 创建空集合
empty_set = set()
print(empty_set)  # 输出: set()# 创建含重复元素的集合
duplicate_set = {1, 1, 2, 3}
print(duplicate_set)  # 输出: {1, 2, 3}(重复元素被自动去掉)
三、集合的基本操作
1. 添加元素

可以使用 add() 方法向集合中添加一个元素。如果元素已经存在,集合不会发生变化。

示例

my_set = {1, 2, 3}
my_set.add(4)
print(my_set)  # 输出: {1, 2, 3, 4}
2. 删除元素

可以使用 remove()discard()pop() 方法删除集合中的元素。

  • remove():如果元素不存在,将引发 KeyError

    my_set.remove(2)
    print(my_set)  # 输出: {1, 3, 4}
    
  • discard():如果元素不存在,不会引发错误。

    my_set.discard(5)  # 不会报错
    print(my_set)  # 输出: {1, 3, 4}
    
  • pop():随机删除并返回集合中的一个元素。如果集合为空,会引发 KeyError

    removed_element = my_set.pop()
    print(removed_element)  # 输出: 随机选择的元素
    print(my_set)           # 输出: 剩下的元素
    
3. 清空集合

使用 clear() 方法可以清空集合中的所有元素。

示例

my_set.clear()
print(my_set)  # 输出: set()
4. 集合的长度

使用 len() 函数可以获取集合中元素的数量。

示例

my_set = {1, 2, 3}
print(len(my_set))  # 输出: 3
四、集合的数学运算

集合支持多种数学运算,包括并集、交集、差集和对称差集。

1. 并集(Union)

使用 union() 方法或 | 运算符计算并集。

示例

set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2)
print(union_set)  # 输出: {1, 2, 3, 4, 5}# 也可以使用 |
union_set = set1 | set2
print(union_set)  # 输出: {1, 2, 3, 4, 5}
2. 交集(Intersection)

使用 intersection() 方法或 & 运算符计算交集。

示例

intersection_set = set1.intersection(set2)
print(intersection_set)  # 输出: {3}# 也可以使用 &
intersection_set = set1 & set2
print(intersection_set)  # 输出: {3}
3. 差集(Difference)

使用 difference() 方法或 - 运算符计算差集。

示例

difference_set = set1.difference(set2)
print(difference_set)  # 输出: {1, 2}# 也可以使用 -
difference_set = set1 - set2
print(difference_set)  # 输出: {1, 2}
4. 对称差集(Symmetric Difference)

使用 symmetric_difference() 方法或 ^ 运算符计算对称差集。

示例

symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set)  # 输出: {1, 2, 4, 5}# 也可以使用 ^
symmetric_difference_set = set1 ^ set2
print(symmetric_difference_set)  # 输出: {1, 2, 4, 5}
五、集合关系运算

集合也支持一些关系运算,比如子集、超集和不相交等:

  • 子集:使用 issubset() 方法检查一个集合是否是另一个集合的子集。

    set1 = {1, 2}
    set2 = {1, 2, 3, 4}
    print(set1.issubset(set2))  # 输出: True
    
  • 超集:使用 issuperset() 方法检查一个集合是否是另一个集合的超集。

    print(set2.issuperset(set1))  # 输出: True
    
  • 不相交:使用 isdisjoint() 方法检查两个集合是否没有交集。

    set3 = {4, 5, 6}
    print(set1.isdisjoint(set3))  # 输出: True
    
六、遍历集合

可以使用 for 循环遍历集合中的元素:

my_set = {1, 2, 3, 4}
for element in my_set:print(element)  # 输出: 集合中的每个元素(顺序可能不同)
七、冻结集合(frozenset)

frozenset 是不可变的集合,创建后不能修改。适用于需要集合但不希望其改变的场景。

示例

frozen_set = frozenset([1, 2, 3, 4])
print(frozen_set)  # 输出: frozenset({1, 2, 3, 4})# frozen_set.add(5)  # 会引发 AttributeError

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/20635.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

[JavaWeb] 尚硅谷JavaWeb课程笔记

1 Tomcat服务器 Tomcat目录结构 bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat10.exe、tomcat10w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动To…

【Unity基础】认识Unity中的包

Unity中的包是一个核心概念,像Unity本身的功能的扩展,或者项目中资源的管理,都是通过包的形式来实现的。 一、什么是包? 一个包包含满足您项目各种需求的功能。这可以包括编辑器安装过程中附带的任何核心Unity功能,也…

elment-ui的折叠tree表单实现纯前端搜索,展开收起功能

好久没更新博客了~ 记录一下本次做的一个很扯的需求 纯前端去实现这个查询的功能,后台返回的是个数组对象,前端要给他包装成树结构先展示 之后参考代码路径src\views\goods\category\index.vue 需求描述: 搜索输入任何一个关键字,都会展开他的父级,两个栏目都包含了,那么两个父…

linux先创建文件夹后指定创建文件夹用户

1、创建文件夹,然后创建用户并指定用户目录,然后修改目录所有权给该目录 # 创建 /home/test 目录 mkdir /home/test # 设置权限(确保有适当的读写权限) chown root:root /home/test chmod 700 /home/test # 创建 xl 用户并指定家…

大模型(LLM)全参数微调有哪些技巧,常用的轻量级微调有哪些,微调策略应该如何选择?

大家好,我是微学AI,今天给大家介绍一下大模型(LLM)全参数微调有哪些技巧,常用的轻量级微调有哪些,微调策略应该如何选择?本文将从大模型(LLM)全参数微调技巧,常用的轻量级微调方法,微调策略应该…

蓝牙电话-如何自动切换手机SIM卡(预研方向)

蓝牙电话-如何自动切换手机SIM卡(预研方向) 一、前言 最近突然有客户问说,蓝牙电话的app既然已经能统计手机里面插了多少张卡,那能不能做双卡的SIM卡自动切换?即:设置一个呼叫策略和频率,当打…

【蓝桥杯C/C++】C语言和C++的常量概念与区别分析

博客主页: [小ᶻZ࿆] 本文专栏: 蓝桥杯C/C 文章目录 💯前言💯常量的概念和作用💯C语言中 const 的应用与限制#define 和 enum 的使用方法 💯C 中 const 的计算方法和处理💯代码实例和应用区别&#x1f…

全面解析亚马逊云服务器(AWS):功能、优势与使用指南

亚马逊云服务器(AWS)概述 亚马逊云服务器(Amazon Web Services,简称AWS)是全球领先的云计算平台,提供一系列强大且灵活的云服务,帮助企业和开发者通过云基础设施实现数据存储、计算、分析和机器…

“小浣熊家族AI办公助手”产品体验 — “人人都是数据分析师”

一、引言: 大家平时应该在工作中常常使用到Excel来做数据统计,比如临近过年时,公司一般会开各种复盘、年终、检讨、明年规划大会,势必需要准备一大堆的量化数据报表,用于会议上的数据汇报、分析工作,试想一…

C盘扩容(C盘右键无法扩展卷解决)超详细步骤!!!

目录 1、问题及需求2、解决办法方法2 1、问题及需求 今天一看C盘爆红了,但是D盘还剩很多空间,想要从D盘再分出来50G给C盘。 但是压缩了D盘,在C盘扩展卷,实现不了,因为不仅挨着。看下边的解决办法 2、解决办法 桌面上…

机器学习笔记 // 天气预报、股票价格以及历史轨迹(如摩尔定律)// 时间序列的常见属性

时间序列随处可见。你可能已经在天气预报、股票价格以及历史轨迹[如摩尔定律,见下图​]等事物中见过它们。摩尔定律预测微芯片上面的晶体管个数大约每两年会翻倍。几乎50年以来,它已经被证明对未来的计算能源和成本来说是一个准确的预测器。 许多时间序列…

mysql日志写满出现The table ‘xxxx_amazon_order’ is full

数仓发现写数据出现 SQL 错误 [1114] [HY000]: The table ‘xxxx_amazon_order’ is full 1.第一时间查看系统磁盘, 发现空间写满了 df -h因为mysql是使用docker部署的, Docker 的默认存储位置在 /var/lib/docker /var 目录默认是在根分区 (/dev/mapper/centos-root) 下的 …

(一)Ubuntu22.04服务器端部署Stable-Diffusion-webui AI绘画环境

一、说明 cup型号: Intel(R) Celeron(R) CPU G1610 2.60GHz 内存大小: 8G 显卡型号:NVIDIA P104-100 注意:系统睡眠问题 sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target 网卡设置 …

springboot:少量配置信息情形

发现无论怎么改都还是指向8001 所以换一种方法 通过 结果 代码 import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.server.ConfigurableWebServerFactory; import org.springframework.boot.web.server.WebServerFactoryCusto…

SpringBoot的快速入门

Maven Maven可以方便管理依赖的 Jar 包 IDEA 自带Maven,也可以选择自己安装 安装Maven:https://blog.csdn.net/qq_59636442/article/details/142314019 创建项目 通过Spring Initializr 快速创建项目:https://start.springboot.io/ 我的项目名叫blog&a…

2024中国高校计算机大赛 — 大数据挑战赛-赛后复盘

一、赛题描述 基于气象大数据的自动站实况联合预测 风光清洁能源的管理与气象关系密不可分,因为风能和太阳能的发电效率直接依赖于气象条件。风力发电需要精确的风速和风向预测,而太阳能发电则依赖于日照时间和云层覆盖情况的准确预报。优质的气象预测…

J.U.C - 深入解析ReentrantLock原理源码

文章目录 概述synchronized的缺陷1)synchronized不能控制阻塞,不能灵活控制锁的释放。2)在读多写少的场景中,效率低下。 独占锁ReentrantLock原理ReentrantLock概述AQS同步队列1. AQS实现原理2. 线程被唤醒时,AQS队列的…

基于Java+Springboot+Jpa+Mysql实现的在线网盘文件分享系统功能设计与实现二

一、前言介绍: 免费学习:猿来入此 1.1 项目摘要 在线网盘文件分享系统的课题背景主要源于现代社会对数字化信息存储和共享需求的日益增长。随着互联网的普及和技术的快速发展,人们越来越依赖电子设备来存储和传输各种类型的数据文件。然而…

DBSCAN聚类——基于密度的聚类算法(常用的聚类算法)

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)简称密度聚类或密度基础聚类,是一种基于密度的聚类算法,也是一种常用的无监督学习算法,特别适用于形状不规则的聚类和含有噪声的数据集。主要用于…

C++:指针和引用

指针的基础 数据在内存当中是怎么样被存储的 数据在内存中的存储方式取决于数据的类型和计算机的体系结构 基本数据类型 整数类型:整数在内存中以二进制补码的形式存储。对于有符号整数,最高位为符号位,0 表示正数,1 表示负数。…