当前位置: 首页 > news >正文

Python集合的基本概念和使用方法

目录

集合(Set)

基本概念

基本特性

基本操作

集合运算

成员测试

高级操作

集合推导式

总结


集合(Set)

Python集合(Set)是Python语言中一个非常实用且强大的数据结构,它用于存储多个不重复的元素。集合中的元素可以是任何不可变类型的数据,如整数、浮点数、字符串等,但不能是可变数据类型,如列表或字典。集合提供了一种高效执行集合操作(如并集、交集、差集)的方式,这对于数据处理和分析任务尤为有用。

基本概念

在Python中,集合用set关键字来创建,可以通过花括号{}直接定义,或者使用内置函数set()将其他可迭代对象转换为集合。集合中的元素自动去重,这意味着每个元素在集合中只会出现一次。

# 直接定义集合
>>> my_set = {1, 2, 3, 4}
>>> print(my_set)
{1, 2, 3, 4}# 使用set()函数转换列表为集合
>>> my_list = [1, 2, 2, 3, 4]
>>> my_set_from_list = set(my_list)
>>> print(my_set_from_list)
{1, 2, 3, 4}

注意:空集合只能用set()创建,因为{}代表的是空字典。

>>> type({})
<class 'dict'>
>>> type(set())
<class 'set'>

基本特性

在数学中,集合是由不同元素组成的一个整体,这些元素是无序的,且不重复。Python 的集合类型(set)正是基于这一概念实现的。与列表(list)、元组(tuple)等其他数据结构相比,集合有以下几个显著特性:

  1. 无序性:集合中的元素没有固定的顺序。
  2. 元素唯一性:集合中的所有元素都是唯一的,不会有重复的元素。
  3. 可变:集合是可变的,可以添加或删除元素。
  4. 动态性:集合的大小可以根据需要动态变化。

基本操作

  1. add(element):向集合中添加一个元素。
  2. remove(element):从集合中移除指定元素,如果元素不存在则抛出KeyError异常。
  3. discard(element):与remove相似,但当元素不存在时不会抛出错误。
  4. pop():随机移除并返回集合中的一个元素,集合为空时会抛出KeyError。
  5. clear():移除集合中所有元素,使其成为空集。
  6. copy():集合的复制拷贝。
>>> a = {1,2,3}
>>> a.add(4)
>>> a
{1, 2, 3, 4}
>>> a.remove(4)
>>> a
{1, 2, 3}
>>> a.remove(4)
Traceback (most recent call last):File "<pyshell#11>", line 1, in <module>a.remove(4)
KeyError: 4
>>> a.discard(4)
>>> a.discard(3)
>>> a
{1, 2}
>>> a.pop()
1
>>> a
{2}
>>> a.clear()
>>> a
set()
>>> t = {2,3,4}
>>> t
{2, 3, 4}
>>> s = t.copy()
>>> s
{2, 3, 4}

集合运算

  1. union(other_set) :返回两个集合的并集
  2. intersection(other_set) :返回两个集合的交集
  3. difference(other_set) :返回两个集合的差集
  4. symmetric_difference(other_set) :返回两个集合中不重复的元素集合,也称对称差集

集合运算也能使用运算符操作,以上四种运算分别对应重载运算符: | 、 &、 -、 ^

>>> s = {1,2,3}
>>> t = {2,3,4}
>>> s.union(t)
{1, 2, 3, 4}
>>> s | t
{1, 2, 3, 4}
>>> s.intersection(t)
{2, 3}
>>> s & t
{2, 3}
>>> s.difference(t)
{1}
>>> s - t
{1}
>>> s.symmetric_difference(t)
{1, 4}
>>> s ^ t
{1, 4}

另外对应四个update函数,功能对应相同,但改变当前集合。

  1. update(other_set) :返回两个集合的并集
  2. intersection_update(other_set) :返回两个集合的交集
  3. difference_update(other_set) :返回两个集合的差集
  4. symmetric_difference_update(other_set) :返回两个集合中不重复的元素集合,也称对称差集
>>> s = {1,2,3}
>>> t = {2,3,4}
>>> s.update(t)
>>> s
{1, 2, 3, 4}
>>> t
{2, 3, 4}
>>> s = {1,2,3}
>>> s.intersection_update(t)
>>> s
{2, 3}
>>> s = {1,2,3}
>>> s.difference_update(t)
>>> s
{1}
>>> s = {1,2,3}
>>> s.symmetric_difference_update(t)
>>> s
{1, 4}

注:改变的是原集合的值,四个函数的返回值都是None。

成员测试

  • in 和 not in:检查元素是否属于集合。
>>> s = {1,2,3}
>>> 1 in s
True
>>> 4 in s
False
>>> 1 not in s
False
>>> 4 not in s
True

高级操作

  1. 子集与超集:可以使用 issubset() 和 issuperset() 方法来判断一个集合是否是另一个集合的子集或超集(父集)。
  2. isdisjoint():判断当前集合与另一个集合,是否交集为空。
  3. 幂集:幂集是指一个集合所有可能子集的集合,可以通过递归或迭代的方式生成。
  4. 笛卡尔积:两个集合的笛卡尔积可以通过 itertools.product() 函数实现。

注:比较运算符==、  >、 >=、 < 、<= 也被重载用于父集、子集的比较。

注:笛卡尔积的概念

假设有两个集合 A = {a1, a2, ..., an} 和 B = {b1, b2, ..., bm},它们的笛卡尔积是所有可能的有序对 (ai, bj) 的集合,记作 A×B。

>>> import itertools
>>> s = {1,2,3}
>>> t = {2,3,4}
>>> list(itertools.product(s,t))
[(1, 2), (1, 3), (1, 4), (2, 2), (2, 3), (2, 4), (3, 2), (3, 3), (3, 4)]

集合推导式

类似于列表推导式,集合也可以通过集合推导式快速生成。集合推导式语法简洁,适用于根据已有集合或其他可迭代对象生成新集合。

>>> squares = {x**2 for x in range(10)}
>>> print(squares)
{0, 1, 4, 9, 16, 25, 36, 49, 64, 81}

总结

Python集合是一种无序、不重复元素的集合数据类型,它提供了丰富的操作方法,包括元素的添加、删除、集合运算等。集合在数据处理、算法设计等方面具有广泛的应用,特别是对于需要去重、集合运算的场景,集合的效率和简洁性使其成为首选工具。通过掌握集合的基本操作和高级特性,开发者可以更加灵活高效地处理数据,提升代码的性能和可读性。随着Python在数据分析、机器学习、Web开发等领域的广泛应用,深入理解并有效利用集合功能,已成为Python程序员的一项重要技能。

相关文章:

Python集合的基本概念和使用方法

目录 集合&#xff08;Set&#xff09; 基本概念 基本特性 基本操作 集合运算 成员测试 高级操作 集合推导式 总结 集合&#xff08;Set&#xff09; Python集合&#xff08;Set&#xff09;是Python语言中一个非常实用且强大的数据结构&#xff0c;它用于存储多个不…...

谷歌浏览器124版本Webdriver驱动下载

查看谷歌浏览器版本 在浏览器的地址栏输入&#xff1a; chrome://version/回车后即可查看到对应版本(不要点击帮助-关于Google chrome&#xff0c;因为点击后会自动更新谷歌版本) 114之前版本&#xff1a;下载链接 ​​​​​​123以后版本&#xff1a;下载链接&#xff0…...

十大排序

本文将以「 通俗易懂」的方式来描述排序的基本实现。 &#x1f9d1;‍&#x1f4bb;阅读本文前&#xff0c;需要一点点编程基础和一点点数据结构知识 本文的所有代码以cpp实现 文章目录 排序的定义 插入排序 ⭐ &#x1f9d0;算法描述 &#x1f496;具体实现 &#x1f…...

微信小程序学习笔记(1)

文章目录 一、文件作用app.json&#xff1a;project.config.json:sitemap.json页面中.json 二、项目首页三、语法**WXML**和**HTML**WXSS 和CSS的区别小程序中.js文件的分类 一、文件作用 app.json&#xff1a; 当前小程序的全局配置&#xff0c;包括所有页面路径、窗口外观、…...

OpenGauss数据库-6.表空间管理

第1关&#xff1a;创建表空间 gsql -d postgres -U gaussdb -W passwd123123 CREATE TABLESPACE fastspace OWNER omm relative location tablespace/tablespace_1; 第2关&#xff1a;修改表空间 gsql -d postgres -U gaussdb -W passwd123123 ALTER TABLESPACE fastspace R…...

相约乌镇 续写网络空间命运与共的新篇章(二)

从乌镇峰会升级为世界互联网大会&#xff0c;既是展示互联网发展成果的技术盛会&#xff0c;也是尖端科技综合运用的宏大场景。从枕水江南散发出的“互联网之光”&#xff0c;到前沿技术的创新突破和场景应用&#xff0c;澎湃的是数字经济浪潮&#xff0c;激荡的是科技创新能量…...

【全网最简单的解决办法】vscode中点击运行出现仅当从 VS 开发人员命令提示符处运行 VS Code 时,cl.exe 生成和调试才可用

首先确保你是否下载好了gcc编译器&#xff01;&#xff01;&#xff01; 检测方法&#xff1a; winR 打开cmd命令窗 输入where gcc(如果出现路径则说明gcc配置好啦&#xff01;) where gcc 然后打开我们的vscode 把这个文件删除掉 再次点击运行代码&#xff0c;第一个出现…...

NFS共享存储服务

NFS共享存储服务 NFS&#xff1a;network file system ,在计算机网络中共享文件系统的协议。 计算机之间可以通过网络共享目录和文件&#xff0c;分为两个部分&#xff1a; 1、rpcbind&#xff1a;远程共享调用 2、nfs&#xff1a;共享服务&#xff0c;端口号&#xff1a;2…...

Docker面试整理-Docker 常用命令

Docker 提供了一套丰富的命令行工具,使得用户能够管理容器、镜像、网络和卷等资源。这里列出了一些常用的 Docker 命令: 镜像相关命令:docker pull [OPTIONS] NAME[:TAG|@DIGEST]: 从仓库拉取一个镜像或仓库。docker push NAME[:TAG]: 推送一个镜像或仓库到远程仓库。docker …...

Cinema 4D 2024 软件安装教程、附安装包下载

Cinema 4D 2024 Cinema 4D&#xff08;C4D&#xff09;是一款由Maxon开发的三维建模、动画和渲染软件&#xff0c;广泛用于电影制作、广告、游戏开发、视觉效果等领域。Cinema 4D允许用户创建复杂的三维模型&#xff0c;包括角色、场景、物体等。它提供了多种建模工具&#x…...

2024全国高考作文题解读(Chat GPT 4.0版本)

新课标I卷 阅读下面的材料&#xff0c;根据要求写作。&#xff08;60分&#xff09; 随着互联网的普及、人工智能的应用&#xff0c;越来越多的问题能很快得到答案。那么&#xff0c;我们的问题是否会越来越少&#xff1f; 以上材料引发了你怎样的联想和思考&#xff1f;请写…...

欧美北美南美国外媒体投稿和东南亚中东亚洲媒体海外新闻发稿软文推广营销策略有哪些?

在当今全球化的浪潮中&#xff0c;中国品牌正积极拓展海外市场&#xff0c;寻求更广阔的发展空间。面对国际竞争&#xff0c;有效的海外媒体发稿营销策略对于品牌国际化至关重要。以下是一些关键点和建议&#xff0c;以帮助品牌在海外市场取得成功。 深入了解目标市场&#xf…...

Rust-10-数据类型

Rust 标准库中包含一系列被称为 集合&#xff08;collections&#xff09;的非常有用的数据结构。大部分其他数据类型都代表一个特定的值&#xff0c;不过集合可以包含多个值。不同于内建的数组和元组类型&#xff0c;这些集合指向的数据是储存在堆上的&#xff0c;这意味着数据…...

C#面:PDB是什么东西? 在调试中它应该放在哪里

C# PDB&#xff08;Program Database&#xff09;是一种用于存储调试信息的文件格式。它包含了源代码文件、符号表和其他调试相关的信息&#xff0c;可以帮助开发人员在调试过程中定位和解决问题 在调试中&#xff0c;PDB文件应该与编译生成的可执行文件&#xff08;如DLL或EX…...

C#--使用CMake构建C++程序调用示例

1.C代码 // example.cpp#include <iostream>extern "C" {__declspec(dllexport) void PrintMessage() {std::cout << "Hello from C!" << std::endl;} }2.CMakeLists.txt文件&#xff0c;用于使用CMake构建C库&#xff1a; # CMakeLis…...

三十七篇:大数据架构革命:Lambda与Kappa的深度剖析

大数据架构革命:Lambda与Kappa的深度剖析 1. 引言 在这个数据驱动的时代,我们面临着前所未有的挑战和机遇。随着数据量的爆炸性增长,传统的数据处理方法已无法满足现代业务的需求。大数据处理不仅涉及数据量的增加,还包括数据类型的多样化、数据来源的广泛性以及对实时数据…...

Vue3【十五】标签的Ref属性

Vue3【十五】标签的Ref属性 标签的ref属性 用于注册模板引用 用在dom标签上&#xff0c;获取的是dom节点 用在组件上&#xff0c;获取的是组件实例对象 案例截图 目录结构 代码 app.vue <template><div class"app"><h1 ref"title2">你…...

Java实现数据结构——顺序表

目录 一、前言 二、实现 2.1 增 2.2 删 2.3 查 2.4 改 2.5 销毁顺序表 三、Arraylist 3.1 构造方法 3.2 常用操作 3.3 ArrayList遍历 四、 ArrayList具体使用 4.1 杨辉三角 4.2 简单洗牌算法 一、前言 笔者在以前的文章中实现过顺序表 本文在理论上不会有太详细…...

线程知识点总结

Java线程是Java并发编程中的核心概念之一&#xff0c;它允许程序同时执行多个任务。以下是关于Java线程的一些关键知识点总结&#xff1a; 1. 线程的创建与启动 继承Thread类&#xff1a;创建一个新的类继承Thread类&#xff0c;并重写其run()方法。通过创建该类的实例并调用st…...

计算机网络:数据链路层 - 扩展的以太网

计算机网络&#xff1a;数据链路层 - 扩展的以太网 集线器交换机自学习算法单点故障 集线器 这是以前常见的总线型以太网&#xff0c;他最初使用粗铜轴电缆作为传输媒体&#xff0c;后来演进到使用价格相对便宜的细铜轴电缆。 后来&#xff0c;以太网发展出来了一种使用大规模…...

视频修复工具,模糊视频变清晰!

老旧视频画面效果差&#xff0c;视频效果模糊。我们经常找不到一个好的工具来让视频更清晰&#xff0c;并把它变成高清画质。相信很多网友都会有这个需求&#xff0c;尤其是视频剪辑行业的网友&#xff0c;经常会遇到这个问题。今天给大家分享一个可以把模糊视频修复清晰的工具…...

协程库——面试问题

1 同步、异步 1.1 同步 代码顺序执行&#xff0c;完全由用户控制. 同步阻塞 等待可读、可写的时候阻塞&#xff0c;不让出cpu。读、写之后&#xff0c;下面的代码才能执行、 同步非阻塞 等待可读、可写时&#xff0c;不会阻塞cpu&#xff0c;返回失败&#xff0c;设置错误码为…...

数据结构与算法题目集(中文)6-2顺序表操作集

题目地址 https://pintia.cn/problem-sets/15/exam/problems/type/6?problemSetProblemId725&page0 注意审题&#xff0c;返回false的时候不要返回ERROR&#xff0c;否则答案错误&#xff0c;机器规则是死的。 位置一般指数组下标&#xff0c;位序一般指数组下标1。但是思…...

8086 汇编笔记(十二):int 指令 端口 直接定址表

一、int 指令 int 指令的格式为:int n&#xff0c;n 为中断类型码&#xff0c;它的功能是引发中断过程 CPU 执行 intn 指令&#xff0c;相当于引发一个n号中断的中断过程&#xff0c;执行过程如下&#xff1a; (1) 取中断类型码 n; (2) 标志寄存器入栈&#xff0c;IF0&…...

揭开FFT时域加窗的奥秘

FFT – Spectral Leakage 假设用于ADC输出数据分析的采样点数为N&#xff0c;而采样率为Fs&#xff0c;那我们就知道&#xff0c;这种情况下的FFT频谱分辨率为δf&#xff0c;那么δfFs/N。如果此时我们给ADC输入一个待测量的单频Fin&#xff0c;如果此时Fin除以δf不是整数&a…...

【AI基础】第二步:安装AI运行环境

开局一张图&#xff1a; ​ 接下来按照从下往上的顺序来安装部署。 规则1 注意每个层级的安装版本&#xff0c;上层的版本由下层版本决定 比如CUDA的版本&#xff0c;需要看显卡安装了什么版本的驱动&#xff0c;然后CUDA的版本不能高于这个驱动的版本。 这个比较好理解&…...

【MySQL】聊聊唯一索引是如何加锁的

首先我们要明确&#xff0c;加锁的对象是索引&#xff0c;加锁的基本单位是next-key lock&#xff0c;由记录锁和间隙锁组成。next-key是前开后闭区间&#xff0c;间隙锁是前开后开区间。根据不同的查询条件next-key 可能会退化成记录锁或间隙锁。 在能使用记录锁或者间隙锁就…...

k8s-CCE使用node节点使用VIP--hostNetworkhostPort

CCE使用node节点使用VIP 背景:想在节点上使用VIP,将nodeport服务做到高可用。启动VIP后发现访问失败 部署 ! Configuration File for keepalived global_defs { router_id master-node }vrrp_instance VI_1 {state BACKUPinterface eth0mcast_src_ip 10.1.0.60virtual_rou…...

18、关于优化中央企业资产评估管理有关事项的通知

一、加强重大资产评估项目管理 (一)中央企业应当对资产评估项目实施分类管理,综合考虑评估目的、评估标的资产规模、评估标的特点等因素,合理确定本集团重大资产评估项目划分标准,原则上,企业对外并购股权项目应纳入重大资产评估项目。中央企业应当研究制定重大资产评估…...

AI大模型日报#0610:港大等1bit大模型“解决AI能源需求”、谷歌开源TimesFM时序预测模型

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE 4.0&#xff09;、“零一万物”&#xff08;Yi-Large&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xf…...

视频网站视频预览怎么做的/优化网站的软件下载

前言 上一篇给大家介绍了Android Crash中的Java Crash分析&#xff0c;我们可以知道Java Crash一般会弹出提示框告诉我们程序崩溃了&#xff0c;通常使用Crash工具都能够捕获到&#xff1b;本篇博客来谈谈如何针对Native Crash进行分析&#xff0c;它相对与Java层面的Crash有什…...

人与马做网站/服装店营销策划方案

配套FPGA开发板&#xff08;含该设计的工程代码&#xff09;&#xff1a;https://item.taobao.com/item.htm?spma1z10.1-c.w4004-4676525296.4.6e8950ed57YPhv&id17848039135 基于FPGA的智力抢答器设计 功能说明 说明 4路抢答器&#xff0c;选手&#xff0c;主持人可以进行…...

网站建设方案的重要性/国际新闻今天

题目看这里 一看求和就知道是要先用前缀和的 让后看到类似相等和不相等的条件&#xff0c;可以考虑并查集 当然这道题由于变量的值一定是0,1所以关系只有不等号也有反传递性&#xff0c;可以直接拆点来做 如果s[i]s[j]那么我们就将i,j所在的并查集合并&#xff0c;将i和j所在的…...

做外汇网站代理赚钱吗/重庆发布的最新消息今天

此方法可以将复选框的默认样式替换成任意样式。如图&#xff1a; 未选择&#xff1a; 选择时&#xff1a; 思路&#xff1a;将复选框隐藏&#xff0c;利用lebal元素的焦点传递特性&#xff0c;用lebal的样式替代复选框。 代码如下&#xff1a; <!DOCTYPE html> <html&…...

中企动力科技股份有限公司销售/互联网优化

1. Class类的使用 1.1 class的获取有三种方式 F fnew F();//方法一 任何一个类都有一个隐含的静态成员变量classClass c1F.class;//方法二 已经知道该类的对象通过getClass方法Class c2f.getClass();System.out.println(c1c2); //true//方法三 Class.forName()方…...

与国外公司合作网站建设上海公司/seo课程在哪培训好

2019独角兽企业重金招聘Python工程师标准>>> 编辑/etc/mysql/my.cnf文件&#xff0c;相当于windows中的my.ini&#xff1a; 找到[client] 添加&#xff1a; default-character-set utf8 // 默认字符集为utf8 找到[mysqld] 添加: default-character-set utf8 //默认…...