11. 集合set类型详解

news2024/9/29 13:25:22

python3 set类型的使用

1. 基础知识

(1) 集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。集合是一个无序的不重复元素序列
(2)基本功能是进行成员关系测试和删除重复元素。
(3)可以使用大括号{ }或者set()创建集合。注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

(4)自动去重。集合中是不允许存在相同的元素的

sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu', 'Baidu'}
print(sites)        # 自动去重

在这里插入图片描述
(5)成员资格运算符

sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu', 'Baidu'}

if 'Google' in sites:
    print("Google在集合中.")
else:
    print("Google不在集合中.")

在这里插入图片描述

2. 集合之间的运算

根据高中集合中所学知识,集合之间存在一定的运算,此处不再赘述。
集合间存在并集(|),差集(-),交集(&),对称差集(^)。

set1= set("abcd")
set2= set("cdef")

print(set1 | set2)        # 集合set1和集合set2所有的元素
print(set1 - set2)        # 集合set1中包含而集合set2中不包含的元素
print(set1 & set2)        # 集合set1和集合set2共有的元素
print(set1 ^ set2)        # 取集合set1和set2中 不属于 set1&set2的元素

在这里插入图片描述

3. 集合的基本操作

(1) 添加元素
[a]. set.add()方法

sites = {'Google', 'Taobao'}
print('添加前:> ', sites)
sites.add("ZhiHu")
sites.add("ZhiHu")  # 如果元素已经存在, 则不进行任何操作
print('添加后:> ', sites)

在这里插入图片描述
[b]. set.update(x)方法
也可以用来向集合中添加元素, 且参数可以是列表,元组,字典等

sites = {'Google', 'Taobao'}
print('添加前:> ', sites)
sites.update([1,3], ["good", "bad"])
print('添加后:> ', sites)

在这里插入图片描述

(2) 删除元素
[a]. set.remove(elem)方法
将元素elem从集合set中删除,如果元素elem不存在,将发生报错

sites = {'Google', 'Taobao'}
sites.remove('Google')	# 移除元素Google,正确
print('移除后:> ', sites)
sites.remove('BaiDu')	# 错误, 因为集合中没有BaiDu元素

在这里插入图片描述

[b]. set.discard(elem)方法
此方法也可以移除集合中的元素,且如果元素不存在,不会发生错误

sites = {'Google', 'Taobao'}
sites.discard('Google')	
print('移除后:> ', sites)
sites.discard('BaiDu')	# 即使不存在BaiDu元素, 此处也不会报错, 只是默默地失败

在这里插入图片描述
[c]. set.pop()方法
可以从集合中随机的删除一个元素
set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。

# 可以多次运行该程序, 会发现每次运行结果不尽相同
sites = {'Google', 'Taobao', "BaiDu", "ZhiHu"}
print(sites.pop())

(3) 清空集合
set.clear(),就是将这个集合置空。

sites = {'Google', 'Taobao', "BaiDu", "ZhiHu"}
sites.clear()
print(sites)

在这里插入图片描述

(5) 计算集合元素个数

sites = {'Google', 'Taobao', "BaiDu", "ZhiHu"}
print(len(sites))

在这里插入图片描述

(6) 成员运算符
格式:elem in set

sites = {'Google', 'Taobao', "BaiDu", "ZhiHu"}
print('Google' in sites)
print('JiDong' in sites)

在这里插入图片描述

4. 集合内置方法完整列表

add():向集合中追加一个元素
clear():清空整个集合中的元素
copy():拷贝一个集合
pop():随机集合中的元素
。。。。
更多API接口请参考官方接口文档。

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

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

相关文章

大年初四,Flutter Forward 中国社区直播活动与你不见不散

之前我们预告过,2023 年 1 月 25 日 (年初四),Flutter 团队将在肯尼亚首都内罗毕举办 Flutter Forward 大会,并同时开启线上直播。本次活动将为展示最新的 Flutter 技术更新,包括一个主题演讲,以及多个技术演讲和线上问…

【兔年之兔子走迷宫】 用一个小游戏对回溯法进行实现 | C++

第六章 回溯法 目录 第六章 回溯法 ●前言 ●一、回溯法是什么? 1.简要介绍 ●二、回溯法经典案例——兔子走迷宫游戏 1.具体情况 2.代码展示(C) 3.结果展示 ●总结 前言 简单的来说,算法就是用计算机程序代码来实…

性能监控和工具使用

1、jvm 内存模型 程序计数器 Program Counter Register:  记录的是正在执行的虚拟机字节码指令的地址,  此内存区域是唯一一个在JAVA虚拟机规范中没有规定任何OutOfMemoryError的区 域  虚拟机:VM Stack  描述的是 JAVA 方法执行的内…

Delphi 中.dproj 文件解析(二、详细解析)

上一篇 介绍了Delphi 的各个版本,本文开始分析.dproj文件。.dproj是一个XML文件,里边包含了我们在Delphi开发环境中对项目设置的所有参数(位于IDE:Project -> Options 中),包括并不限于:版本…

LabVIEW查找范例VI

LabVIEW查找范例VILabVIEW拥有数百个范例VI,用户可搜索需要的范例VI并将其整合到自己创建的VI中。除LabVIEW内置的范例VI之外,在ni.com技术支持页中可查看更多的范例VI。用户可根据应用程序的需要对范例进行修改,也可复制并粘贴一个或多个范例…

LC-1824. 最少侧跳次(动态规划)

1824. 最少侧跳次数 难度中等49 给你一个长度为 n 的 3 跑道道路 ,它总共包含 n 1 个 点 ,编号为 0 到 n 。一只青蛙从 0 号点第二条跑道 出发 ,它想要跳到点 n 处。然而道路上可能有一些障碍。 给你一个长度为 n 1 的数组 obstacles &a…

【FPGA】Verilog 实践:狄摩根定律 | 布尔方程 | 1bit 比较器

写在前面:为了解狄摩根定理和布尔函数的行为,我们使用 Verilog 实现狄摩根定律和布尔函数的行为。生成输入信号后,验证通过仿真实现的结果。 Ⅰ. 前置知识 0x00 离散结构:否定量词的狄摩根定律 否定量词的狄摩根定律是&#xf…

基于自适应降噪的深度神经网络对抗图像检测【论文阅读】

近年来,许多研究表明,深度神经网络(DNN)分类器可能会被对抗性示例所欺骗,这种对抗性示例是通过对原始样本引入一些扰动来设计的。据此,提出了一些强大的防御技术。然而,现有的防御技术往往需要修改目标模型或依赖于攻击…

针对容器场景的多功能渗透工具

介绍 CDK是一款为容器环境定制的渗透测试工具,在已攻陷的容器内部提供零依赖的常用命令及PoC/EXP。集成Docker/K8s场景特有的 逃逸、横向移动、持久化利用方式,插件化管理。 下载/植入 将可执行文件投递到已攻入的容器内部开始使用 https://github.c…

浏览器打不开某些网站是什么原因导致,试试用这些方法来解决

不少小伙伴使用一些浏览器浏览网页的时候,发现打不开某些网站,这是什么原因导致的呢?本文讲汇总几个常见的原因,我们可以通过以下几个原因排查,并且使用下文的解决方法可以试试能否打开网站。打不开网站的原因1、浏览器限制如果用…

SpringMVC工作流程

SpringMVC工作流程 1. SpingMVC的常用组件 1)DispatcherServlet 是一种前端控制器,由框架提供。作用:统一处理请求和响应。除此之外还是整个流程控制的中心,由 DispatcherServlet 来调用其他组件,处理用户的请求 2&am…

在甲骨文云容器实例(Container Instances)上部署Oracle Linux 8 Desktop

甲骨文云推出了容器实例,这是一项无服务器计算服务,可以即时运行容器,而无需管理任何服务器。 今天我们尝试一下通过容器实例部署Oracle Linux 8 Desktop。 创建容器实例 在甲骨文容器实例页面,单击"创建容器实例"&am…

【甄选靶场】Vulnhub百个项目渗透——项目五十六:sp-jerome(squid代理,计划任务)

Vulnhub百个项目渗透 Vulnhub百个项目渗透——项目五十六:sp-jerome(文件上传,缓冲区溢出) 🔥系列专栏:Vulnhub百个项目渗透 🎉欢迎关注🔎点赞👍收藏⭐️留言&#x1f4…

微信公众号主体已注销 如何办理账号迁移和公证书?

公众号主体公司已经注销,公众号也可以办理迁移的。而且需要尽快迁移,如果被微信系统检测到主体注销,而公众号还在经营就会要求限期迁移,否则公众号将被冻结。 下面我们就来说一下,主体已注销如何办理公众号迁移。 注&a…

Ubuntu20.04+GLFW搭建OpenGL开发环境

环境 系统:Ubuntu 20.04 桌面环境:X11 OpenGL版本: 3.0 桌面环境怎么看呢?可以在终端输入echo $XDG_SESSION_TYPE 即可,或者查看桌面右上角的Settings->About,查看Windowing System 查看OpenGL版本 使用glxinfo命…

【数据结构】深度剖析栈的各接口功能实现

目录 🍊前言🍊: 🥝一.栈的概述🥝: 1.栈的概念: 2.栈的结构: 🍉 二、栈的各接口功能实现🍉: 1.栈的初始化: 2.压栈:…

十六进制转八进制(蓝桥杯基础练习C/C++)

我首先想到的就是十六进制转十进制&#xff0c;十进制转八进制&#xff0c;毕竟这样的方法是最常见的&#xff0c;但始终出现报错。 我想可能是int能储存的数范围太小了&#xff0c;就尝试用long long存储&#xff0c;结果还是报错。 #include <bits/stdc.h> using nam…

C++语法复习笔记-1. c++指针

文章目录1. 计算机内存1. 储存层次2. 内存单元与地址3. 指针定义2. 左值与右值1. 数组与指针1. 概念3. C中的原始指针1. 数组指针与指针数组2. const pointer 与 pointer to const3. 指向指针的指针4.关于野指针4.1 指向指针的指针4.2 NULL指针4.3 野指针5. 指针的基本运算5.1 …

Linux基础 IO

目录 一、文件操作 1.1 C语言文件操作 1.2 文件 系统调用接口 1.2.1 open/close函数 1.2.2 write/read函数 二、进程与文件 2.1 0&1&2 文件描述符 2.2 C语言FILE 2.3 (OS管理&进程找到) 被打开文件方法 2.3.1 struct file 描述文件属性(OS管理文件) 2.3…

线性时变系统的PID控制-2

在线性时变系统的PID控制-1的基础上采用S函数进行Simulink仿真。被控对象的描述方式可变换为&#xff1a;在S函数中&#xff0c;采用初始化、微分函数和输出函数&#xff0c;即mdllnitializeSizes函数、mdIDerivatives函数和mdlOutputs函数。在初始化中采用sizes结构&#xff0…