Python教程——Python数据结构集合set介绍

深入理解Python中的数据结构:集合(Set) 在Python编程中,集合(Set)是一种非常常用且独特的数据结构。集合是一组无序且不重复的元素,用于去重、集合运算等任务。在某些特定场景中,集合提供了比列表和元组更高效的解决方案。这篇博文将深入探讨Python集合的各种特性、操作及其使用场景,希望能帮助读者更好地理解和使用这一重要的数据结构。集合是Python中的一种内置数据结构,用于存储多个无序且不重复的元素。集合可以用于去重、集合运算(如并集、交集、差集)等任务。无序:集合中的元素没有特定的顺序。不重复:集合中的元素是唯一的,不允许重复。可变。 阅读详情

集合是一种无序、可变的数据结构,它也是一种变量类型,集合用于存储唯一的元素。集合中的元素不能重复,并且没有固定的顺序。在Python 提供了内置的 set 类型来表示集合,所以关键字set就是集合的意思。

你可以使用大括号 {} 或者 set() 函数来创建一个集合。

my_set = {1, 2, 3}  # 使用大括号创建集合
print(my_set)  # 输出: {1, 2, 3}

my_set = set([1, 2, 3]) # 使用 set() 函数创建集合
print(my_set)  # 输出: {1,2, 3}

需要注意的是,集合是无序的,没有固定的顺序。因此,集合元素的顺序可能与你创建或添加的顺序不同。

集合具有以下特点:

  • 集合中的元素是唯一的,不重复。如果重复相同的元素,集合将自动去重。
  • 集合是无序的,没有固定的顺序。因此,你无法像列表或元组那样索引来访问集合中的元素。
  • 集合是可迭代的,你可以使用 for 循环遍历集合中的元素。
  • 集合是可变的,你可以添加、删除和修改集合中的元素

创建集合

要使用集合,首先就必须要创建,那么在 Python 中,有哪些创建集合的方式呢?你可以使用以下几种方式创建集合。

1、 使用大括号 {} 或者 set() 函数创建一个集合,将元素用逗号隔开:

my_set = {1, 2, 3}  # 使用大括号创建集合
print(my_set)  # 输出: {1, 2, 3}

my_set = set([1, 2, 3]) # 使用 set() 函数创建集合
print(my_set)  # 输出: {1, 2, 3}

注意,如果你使用空的大括号 {} 来创建一个对象,那么创建的将是一个空字典,而非空集合。因此,你必须使用 set() 函数来创建一个空集合:

empty_set = set()
print(empty_set)  # 输出: set()

2、 使用集合推导式来创建集合。集合推导式的语法类似于列表推导式,只需将中括号 [ ] 替换为大括号 { }:

my_set = {i for i in range(1, 5)}
print(my_set)  # 输出: {1, 2, 3, 4}

3、 将其他可迭代的对象(列表、字符串、元组等)转换为集合,可以使用 set() 函数来实现:

my_list = [1, 2, 3, 2]
my_set = set(my_list)
print(my_set)  # 输出: {1, 2, 3}

my_string = 'hello'
my_set ={my_string}
print(my_set)  # 输出: {'h', 'e', 'l', 'o'}

访问集合

由于集合是无序的,没有固定的索引,使用索引访问集合中的元素是不可行的,要访问集合中的元素,你可以使用迭代器或者通过成员运算符来实现。

1、 使用迭代器:通过使用 for 循环遍历集合中的每个元素。

my_set = {1, 2, 3}
for item in my_set:
    print(item)

2、 使用成员运算:使用 in 或者 not in 运算符来检查元素是否存在于集合中。

my_set = {1, 2, 3}
print(2 in my_set)  # 输出: True
print(4 not in my_set)  # 输出: True

删除集合

在 Python 中,可以使用 del 关键字来删除集合:

1、 使用 del 关键字删除集合变量,删除之后如果再次访问,就会发生错误。

my_set = {1, 2, 3}
del my_set

修改集合元素

创建的集合,我们可以对其中的集合元素进行操作,不仅可以添加元素,还是可以删除其中的元素。

添加集合元素

1、使用 add() 方法向集合中添加元素。

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

2、使用列表的解包操作添加多个元素。

my_set = {1, 2, 3}
new_elements = [4, 5]
my_set.update(new_elements)
print(my_set)  # 输出: {1, 2, 3, 4, 5}

因为集合的元素是唯一的,所以如果添加了重复的元素,那么重复的元素不会被添加到集合中,当然执行的过程并不会发生报错,只是不会被添加进去而已。在使用update()方法时,传入的参数可以是一个集合、列表或者其他可迭代对象。

删除集合元素

1、 使用 remove() 方法删除指定元素:remove() 方法会从集合中删除指定的元素。如果集合中不存在该元素,会引发 KeyError 异常。

my_set = {1, 2, 3, 4}
my_set.remove(3)
print(my_set)  # 输出: {1, 2,4}

my_set.remove(5)  # 删除不存在的元素,引发 KeyError 异常

2、 使用 discard() 方法删除指定元素:discard() 方法会从集合中删除指定的元素。如果集合不存在该元素,该不会引发异常而是不进行任何操作。

my_set = {1, 2, 3 4}
my_set.discard(3)
(my_set)  # 输出: {1, 2, 4}

my_set.discard(5)  # 删除不存在的元素,不会引发异常

3、 clear() 方法清空集合:clear() 方法会清空集合元素。

my_set = {1, 2, 3, 4}
my_set.clear()
print(my_set)  # 输出: set()

集合运算:

集合的运算指的是对集合进行一系列操作,包括求并集、交集、差集和对称差集等。这些运算可通过运算符或方法来进行。

并集(Union)

可以使用 | 运算符或者 union() 方法来获取两个集合的并集。所谓的并集就是包含set1和set2集合的所有元素。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1 | set2  # 使用 | 运算符
# 或者使用 union() 方法
# set3 = set1.union(set2)
print(set3)  # 输出: {1, 2, 3, 4, 5}

交集(Intersection)

可以使用 & 运算符或者 intersection() 方法来获取两个集合的交集。所谓的交集就是取set1和set2集合的相同元素,没有相同元素的话返回的就是set()。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1 & set2  # 使用 & 运算符
# 或者使用 intersection() 方法
# set3 = set1.intersection(set2)
print(set3)  # 输出: {3}

差集(Difference)

可以使用 - 运算符或者 difference() 方法来获取两个集合的差集。所谓的差集就是set1中独有的元素,如果set1中的元素,在set2中也有,那么就该元素就不能在差集中。如果是set2 - set1,那就是set2中独有的元素。结果为空的返回就是set()。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1 - set2  # 使用 - 运算符
# 或者使用 difference() 方法
# set3 = set1.difference(set2)
print(set3)  # 输出: {1, 2}

对称差集(Symmetric Difference)

可以使用 ^ 运算符或者 symmetric_difference() 方法来获取两个集合的对称差集。所谓的对称差集就是set1和set2中相同的元素剔除,剩下的元素就是对称差集。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1 ^ set2  #使用 ^ 运算符
# 或者使用 symmetric_difference() 方法
# set3 = set1.symmetric_difference(set2)
print(set3)  # 输出: {1, 2, 4, 5}

需要注意的是,在使用集合运算符时,两个集合的元素类型必须一致。另外,集合的元素是唯一的,不会出现重复。

除了运算符外,还有其他一些常用的集合方法,比如 intersection_update() 方法用于在原集合上更新为两个集合的交集,difference_update() 方法用于在原集合上更新为两个集合的差集,symmetric_difference_update() 方法用于在原集合上更新为两个集合的对称差集。

集合的相关函数

Python中的集合也有不少相关的方法,以下就是列举了集合中常用的方法,如有错误的地方欢迎指出。

函数名解释
add(element)向集合中添加一个元素。
clear()移除集合中的所有元素。
copy()返回集合的副本。
difference(other_set[, …])返回该集合与其他集合的差集。
difference_update(other_set[, …])移除该集合中与其他集合相同的元素,并更新原集合。
discard(element)移除集合中指定的元素。
intersection(other_set[, …])返回该集合与其他集合的交集。
intersection_update(other_set[, …])移除该集合中与其他集合不同的元素,并更新原集合。
isdisjoint(other_set)如果两个集合没有共同的元素,则返回 True;否则返回 False。
issubset(other_set)如果该集合是另一个集合的子集,则返回 True;否则返回 False。
issuperset(other_set)如果该集合是另一个集合的超集,则返回 True;否则返回 False。
pop()随机移除并返回集合中的一个元素。
remove(element)移除集合中指定的元素。若元素不存在,将引发 KeyError 错误。
symmetric_difference(other_set)返回该集合与其他集合的对称差集。
symmetric_difference_update(other_set)移除该集合中与其他集合相同的元素,并更新原集合。
union(other_set[, …])返回该集合与其他集合的并集。
update(other_set[, …])向集合中添加其他集合的元素,并更新原集合。
---------------------------END---------------------------

题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT) ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT)1.可能是ESP STA模式未成功连接到路由器,确保 STA 成功连接到外部网络。2.检查 STA 和 AP 的网络配置是否正确,避免子网冲突。3.ESP32的NAPT功能未正确启用,确保 menuconfig 中已启用 IP_NAPT。4.DNS服务器未正确配置。 阅读详情

相关推荐

Matterport3D数据集介绍与下载(全网最详细)

Matterport3D数据集介绍与下载(全网最详细)

shannanshouyin的博客 2167

Python教程(12)——Python数据结构集合set介绍

因为集合的元素是唯一的,所以如果添加了重复的元素,那么重复的元素不会被添加到集合中,当然执行的过程并不会发生报错,只是不会被添加进去而已。由于集合是无序的,没有固定的索引,使用索引访问集合中的元素是不可行的,要访问集合中的元素,你可以使用迭代器或者通过成员运算符来实现。需要注意的是,在使用集合运算符时,两个集合的元素类型必须一致。创建的集合,我们可以对其中的集合元素进行操作,不仅可以添加元素,还是可以删除其中的元素。的元素,如果set1中的元素,在set2中也有,那么就该元素就不能在差集中。

一点 410

Hadoop与Kafka集群部署与优化实践指南

分布式系统是现代大数据处理的核心架构,其中Hadoop作为分布式存储与计算框架,Kafka作为分布式消息队列系统,共同构成了实时数据处理的基础设施。通过HDFS实现海量数据存储,结合YARN进行资源调度,而Kafka则保障了数据流的实时传输与高吞吐。这种技术组合在电商用户行为分析、物联网数据采集等场景中表现卓越。部署过程中需关注硬件资源配置、关键参数调优以及集群监控方案,例如通过调整HDFS块大小和Kafka partition数量来优化性能。合理运用Flume、Spark Streaming等工具可实现系

weixin_29061997的博客 360

python内置数据结构教程_Python自带数据结构 集合(set)

Python自带数据结构 集合(set)在数学上,集合(Set)是不以任何特定顺序的数据项。 Python集合与此数学定义类似,但有以下附加条件。集合中的元素不能重复。集合中的元素是不可变的(不能被修改),但集合作为一个整体是可变的。附加到python集合中的任何元素不需要索引。所以集合不支持任何索引或切片操作。集合操作python中的集合通常用于像联合,相交,异同和补充等数学运算。下面创建一个集...

weixin_39526651的博客 124

第4章-上下文管理-对话历史记忆系统与窗口优化-《Agentic AI 智能体应用开发》

当上下文窗口接近极限时,需要对已有内容进行压缩。压缩不是简单的截断——你需要保留核心语义,去除冗余。# Python: 对话摘要压缩# 使用 Haiku 做摘要任务,成本最低"""将一段对话历史压缩为摘要"""system="你是一个对话摘要专家。请生成简洁但有信息量的摘要。",f"'用户'

AI天才研究院 246

ARM 之十六 详解 CMSIS 版本变迁、各组件使用示例

目前,CMSIS 已经发展到了第六版,其目录结构也发生了重大的变化。在不断发展中,很多原来 CMSIS 的组件被不断独立出去,并因此成立了很多开源社区,今天就来学习一下!由于 CMSIS 已经包含了相当丰富的文档,因此,本文重点学习版本之间的变化以及一些实际使用示例。

技术干货 1954

python基础详细笔记(七):集合set

目录 Python基础详细笔记(一):基础语法 Python基础详细笔记(二):流程语句 Python基础详细笔记(三):字符串str Python基础详细笔记(四):列表list Python基础详细笔记(五):元组tuple Python基础详细笔记(六):字典dict 7.1 介绍集合 7.2 创建集合 7.3 添加元素 7.4 删除元素 7.5 判断元素是否在集合中存在 7.6 运算方法 7.7 内置方法 7.1 介绍集合 集合(set)是一个无序的不重复元

君莫笑的博客 1414

WPF实战项目十七(客户端):数据等待加载弹框动画

1、在Common文件夹下新建文件夹Events,新建扩展类UpdateLoadingEvent。2、新建一个静态扩展类DialogExtensions来编写注册和推送等待消息弹框方法。3、在ViewModel中添加实现类NavigationViewModel。5、在View文件夹下新建用户控件ProgressView.xmal。4、在主窗体MainView.xmal中给弹窗界面命名。6、在MainView.xmal.cs中注册消息。

yigu4011的博客 2346

python集合set

set是什么 数学上,把set称做由不同的元素组成的集合,集合(set)的成员通常被称做集合元素(set elements)。Python把这个概念引入到它的集合类型对象里。集合对象是一组无序排列的可哈希的值。集合关系测试和union、intersection、difference(并集,交集,差集)等操作符在Python里也同样如我们所预想地那样工作。 set的特点 首先python数据结构分为可变和不可变,set属于可变序列 集合中的元素有三个特征: 确定性:集合中的元素必须是确定的; 互异性:集合中

Joey9898的博客 2839

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程

1.新建shp文件地理坐标系保持和影像一致,面类型2.打开属性表3.添加字段这里分类6类,点击添加值添加添加完毕开始人工选地物类型,制作数据集开始标注,标注的时候可以借助谷歌地图来看标记足够多的样本打开面转栅格工具设置nodata值为15。

热爱分享,热爱记录 2525

CAPL控制程控电源

汽车电子测试过程中,除了实车测试,还有台架测试,在进行台架测试时,都需要通过电源来模拟汽车电瓶给ECU供电,如果要进一步进行比较高效的压力测试或自动化测试,就需要用到程控电源,所以本章主要介绍CAPL是如何来控制程控电源的。

测试领域技术分享 4389

Python Set 集合

flyfish

二分掌柜的 1311

DSShop移动商城网店系统 反序列化RCE漏洞复现

DSShop单店铺移动商城网店系统的getCartList方法的cart参数存在php反序列化漏洞,攻击者可以通过漏洞执行任意代码,获取服务器权限。

0xSec 1471

python set集合如何有序输出_python set集合的用法

python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入...

weixin_32486581的博客 4968

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python中set函数_Python set 集合用法介绍

1. set 介绍Python set 是一个没有重复元素的无序集合,集合里面每个元素都是唯一的,它支持并集,交集,差集等操作2. 创建集合2.1 用花括号字面量定义集合,集合元素用逗号分隔,即使创建集合时元素出现多次,也只会保留一个#!/usr/bin/env python# coding: utf-8nums = { 1, 2, 2, 2, 3, 4 }print(type(nums))pri...

weixin_39915694的博客 1045

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python set大小_python set集合

Python set集合最后更新于:2020-03-21 12:06:03在python变量中除了以前文章所提到的整形int / 浮点数float / 布尔值bool / 列表list / 字典dict 之外,还有一个类型我们还没有做详细介绍,这个变量类型就是集合set。一.set集合简介python set集合使用大括号 { }表示,与字典dict不同的是set集合并没有key/value键值对...

weixin_39647977的博客 1818

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Python中的set集合

集合(set)是0个或多个对想引用的无序集合,这些对象所引用都是哈希运算的 集合是可变的。其中的项是无序的,因此,没有索引位置概念 集合中,任何元素都没有重复 set和dict类似,是一组key的集合,但不存储value,且在set中没有重复的key 4.1集合常用操作 1.创建集合 可以调用集合的构造函数来创建一个集合。必须使用set构造函数。set构造函数至多有一个参数。 没有参数,set会创...

自由 自信 不失望 4206

Python Set(集合)详细使用教程

引言:在Python中,集合(Set)是一种无序且不重复的数据结构。它可以存储多个元素,并且支持常用的集合操作,如并集、交集、差集等。本文将带你详细了解Python集合的基本操作和常用技巧,帮助你更好地理解和应用集合。1. 创建集合:在Python中,可以使用花括号{}或者set()函数来创建一个空集合,然后通过add()方法或者直接赋值的方式添加元素。2. 添加元素:可以使用add()方法来向集合中添加元素。

Saki_Python的博客 765

Python 常用数据结构之集合(set)及其使用场景

在 Python 中,集合(set) 是一种无序、唯一的数据结构,适用于去重、集合运算、快速查找等场景。集合基于哈希表(hash table) 实现,具有高效的元素查找和去重能力,是 Python 中处理唯一值集合的利器。本文将深入探讨 Python `set` 的特性、常见操作、底层实现原理及实际应用场景,帮助你更高效地使用集合!

1265

python中List集合,set集合,frozenset集合它们的区别

本文全面解析Python中List、Set和Frozenset三种集合类型的区别与应用。List是有序可变序列,允许重复元素,适合需要索引访问和保持顺序的场景;Set是无序可变集合,元素唯一且支持高效查找和集合运算;Frozenset是不可变集合,可哈希,适合作为字典键或需要不可变集合的场合。文章详细对比了三者的核心特性、操作方法和性能差异,并通过实际示例说明如何根据具体需求选择合适的数据结构,以提高代码效率和可读性。

yuanpan的专栏 1172

Python | 数据结构之集合set

题目索引简介用法1. 创建空集合和非空集合2. 添加和删除元素3. 求交集和并集遇到的问题 简介 学习python也已经将近一年的时间了,有的时候真的是觉得一点长进都没有。只会一点点调试程序的方法,遇到问题主要靠百度,不会写程序的算法也主要是从优快云上直接copy。 学习了一年的时间,第一次知道python的数据结构,除了list/tuple/dict/ndarray,竟然还有个set,颇受打击...

lovetaozibaby的博客 226

Python中的set(集合)

集合可以理解为一组key的集合,但不存储value。在set中没有重复的key输出是一个大括号括起来的集合{}注意:不可以放入可变对象。只能放入不可变对象。(1)创建set需要一个list作为输入重复元素将被过滤结果将为{1,2,3}

oJinGangZuan的博客 3279

python中集合的长度_Python 集合(Set)

版权所有,未经许可,禁止转载集合集合是无序、无索引的数据集。在Python中,集合用花括号包裹。示例创建集合:thisset = {"自行车", "汽车", "高铁"}print(thisset)注意: 集合是无序的,因此项目将以随机顺序出现。访问集合项目不能通过索引来访问集合项,因为集合是无序的,这些项没有索引。但是您可以使用for循环遍历集合项,使用in关键字查询集合中是否存在指定值。示例遍历...

weixin_39833270的博客 9007

Python 集合(Set)

版权所有,未经许可,禁止转载 章节Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(String) Python 运算符 Python 列表(list) Python 元组(Tuple) Python 集合(Set) Python 字典(Dictionary) Python If … El...

吴吃辣 1492

python中创建集合的语句_Python 集合(set) 介绍

集合 set集合是可变的容器集合内的数据对象都是唯一的(不能重复多次的)集合是无序的存储结构,集合中的数据没有先后关系集合内的元素必须是不可变对象集合是可迭代对象(可以用for等遍历)集合是相当于只有键,没有值的字典(键则是集合的数据)创建空集合:set()创建非空集合的字面值:s = {1,2,3}集合的构造函数:setset() #创建一个空的集合对象(不能用{}来创建空集合)set(i...

weixin_39622655的博客 4149
上一篇: Python数据容器之元组tuple
下一篇: 使用 Python 进行文件处理的库存管理
Python_P叔
博客等级 码龄3年 5449粉丝 827原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值