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

Python基础-数据类型之集合

一、集合的定义

集合:是一个无序的没有重复元素的序列,因此不能通过索引来进行操作

1:使用set()创建集合

set(object)   # 参数为一个序列,整型不能作为参数

set_a = set("abcb")
print(set_a)  # {'b', 'a', 'c'}

2:使用{}直接定义

set_a = {'a', 'b', 'c'}
print(type(set_a), set_a)  # <class 'set'> {'b', 'c', 'a'}

注意:创建一个空集合必须使用set(),而不是{},因为{}是用来创建一个空字典的

set_a = set()
print(type(set_a), set_a)  # <class 'set'> set()b = {}
print(type(b), b)  # <class 'dict'> {}

二、集合的使用

1:添加元素add():重复添加无效

set.add(x)     # x为要添加的元素

返回值为:None,修改了原集合

set_a = set("abc")
print(set_a)    # {'c', 'a', 'b'}
# 元素不存在
set_a.add("d")
print(set_a)    # {'c', 'a', 'b', 'd'}
# 元素已存在
set_a.add('c')
print(set_a)    # {'c', 'a', 'b', 'd'}

2:添加多个元素update():把传入的元素拆分,作为个体加入到集合中

set.update()

返回值为:None,修改了原集合

set_a = set("abc")
print(set_a)   # {'c', 'b', 'a'}
result = set_a.update("defdab")
print(result)  # None
print(set_a)   # {'d', 'f', 'e', 'b', 'c', 'a'}
set_a = set("abc")
print(set_a)   # {'a', 'b', 'c'}
result = set_a.update(['a','g','r',1,2])
print(result)  # None
print(set_a)   # {1, 2, 'a', 'r', 'g', 'c', 'b'}

3:删除元素remove()

set.remove(x)    # x为要删除的元素

返回值为:None,删除的元素不存在,会报错,修改了元集合

set_a = set("abc")
print(set_a)    # {'b', 'c', 'a'}
result = set_a.remove('a')
print(result)   # None
print(set_a)    # {'b', 'c'}
result = set_a.remove('d')   # 报错,KeyError: 'd'

4:删除元素discard()

set.discard(x)    # x为要删除的元素

返回值为:None,删除的元素不存在,不会报错,修改了元集合

set_a = set("abc")
print(set_a)    # {'c', 'b', 'a'}
# 删除的元素存在
result = set_a.discard('a')
print(result)   # None
print(set_a)    # {'c', 'b'}
# 删除的元素不存在
result = set_a.discard('d')
print(result)   # None
print(set_a)    # {'c', 'b'}

5:删除元素pop():随机删除一个元素

set.pop()

返回值为:被删除的元素,修改了元集合

set_a = set("abc")
print(set_a)   # {'c', 'a', 'b'}
result = set_a.pop()
print(result)  # c
print(set_a)   # {'a', 'b'}

6:统计集合的元素个数len()

len(set)

返回值为:集合的元素个数

set_a = {'a', 'b', 'c'}
result = len(set_a)
print(result)    # 3

7:清空集合clear()

set.clear()

返回值为:None,修改了原集合

set_a = {'a', 'b', 'c'}
result = set_a.clear()
print(result)   # None
print(set_a)    # set()

8:判断元素是否在集合中,使用成员运算符(in  /  not in)

set_a = {'a', 'b', 'c'}
print('a' in set_a)     # True
print('a' not in set_a)  # False

9:isdisjoint():判断两个集合是否包含相同的元素

set.isdisjoint(set1)     # set1必填

返回值为:返回布尔值,包含相同的元素返回False,不包含相同的元素,返回True

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a与set_b中是否有相同的元素
result = set_a.isdisjoint(set_b)
print(result)    # False

10:issubset() :判断集合中的所有元素是否都包含在指定的集合中

set.issubset(set1)    # set中的所有元素是否都包含在set1中

# set1:必填 

返回值为:布尔值,如果都包含返回True,否则返回False

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f', 'b', 'g', 'c'}
# set_a中的所有元素是否都包含在set_b中
result = set_a.issubset(set_b)
print(result)    # True

11:issuperset() :判断指定集合的所有元素是否都包含在原始的集合中

set.issuperset(set1)       # set1中的所有元素是否都包含在set中

# set1:必填

返回值为:布尔值,如果都包含返回True,否则返回False

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f', 'b', 'g', 'c'}
# set_b中的所有元素是否都包含在set_a中
result = set_a.issuperset(set_b)
print(result)   # False

三、集合的操作符

1:求差集,集合元素包含在第一个集合中,但不包含在第二个集合

1.1:使用“-”操作符

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中没有
result = set_a - set_b
print(result)   # {'c', 'b'}

1.2:使用difference()方法

set1.difference(set2)    # set1中有的元素,set2中没有

返回值为:一个新的集合,不修改原集合

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中没有
result = set_a.difference(set_b)
print(result)   # {'c', 'b'}

1.3:使用difference_update()方法

set1.difference_update()(set2)    # set1中有的元素,set2中没有

返回值为:一个新的集合,修改了原集合set1

difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中没有
result = set_a.difference_update(set_b)
print(result)   # None
print(set_a)    # {'c', 'b'}

2:求交集,集合元素包含在第一个集合中,同时包含在第二个集合

2.1:使用“&”操作符

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# # set_a中有的元素,在set_b中也有
result = set_a & set_b
print(result)  # {'a'}

2.2:使用intersection() 方法

set.intersection(set1, set2...)  

# set中有的元素,在set1,set2中也有

# set1:必填

# set2:选填

返回值为:一个新的集合,不修改原集合

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中也有
result = set_a.intersection(set_b)
print(result)   # {'a'}

2.3:使用intersection_update() 方法

set.intersection_update(set1, set2 ... )   

# set中有的元素,在set1,set2中也有

# set1:必填

# set2:选填

返回值为:None,修改了原集合set

intersection_update() 方法不同于 intersection() 方法,因为 intersection() 方法是返回一个新的集合,而 intersection_update() 方法是在原始的集合上移除不重叠的元素。

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中也有
result = set_a.intersection_update(set_b)
print(result)   # None
print(set_a)    # {'a'}

3:求并集(合集),所有集合中的所有元素

3.1:使用“|”操作符

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a、set_b中所有的元素
result = set_a | set_b
print(result)   # {'c', 'd', 'b', 'f', 'a'}

3.2:使用union() 方法

set.union(set1,set2...) 

# set,set1,set2等集合中的所有元素

# set1:必填

# set2:选填

返回值为:所有元素组成的一个新的集合,不修改原集合set

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a、set_b中所有的元素
result = set_a.union(set_b)
print(result)   # {'b', 'd', 'f', 'a', 'c'}

相关文章:

Python基础-数据类型之集合

一、集合的定义 集合&#xff1a;是一个无序的没有重复元素的序列&#xff0c;因此不能通过索引来进行操作 1&#xff1a;使用set()创建集合 set(object) # 参数为一个序列&#xff0c;整型不能作为参数 set_a set("abcb") print(set_a) # {b, a, c} 2&…...

[Css]Grid属性简单陈列(适合开发时有基础的快速过一眼)

[css进阶]Grid属性简介 文章目录[css进阶]Grid属性简介典型需求网格容器的属性displaygrid-template-columns和grid-template-rowsgrid-template-areasgrid-templategrid-column-gap grid-row-gapgrid-gapjustify-itemsalign-itemsjustify-contentalign-contentgrid-auto-colum…...

100种思维模型之启发式偏差思维模型-017

曾国藩在给儿子的一封家书中曾写道&#xff1a;余于凡事皆用困知勉行工夫&#xff0c;尔不可求名太骤&#xff0c;求效太捷也。熬过此关&#xff0c;便可少进。再进再困&#xff0c;再熬再奋&#xff0c;自有亨通精进之日。 不急躁不求捷径&#xff0c;小火慢炖&#xff0c;将事…...

微服务 feign远程调用时 显示服务不可用 timed-out and no fallback

目录 第一种: failed and no fallback available 1 服务挂掉了 2 服务没有开启 3 注册中心没注册进去 -> ps: 直接调用的接口 通过网关转发失败 会报503 4 高并发下的服务熔断了 第二种: timed-out and no fallback 2.1 业务场景: A服务一切正常 但是B服务显示timeo…...

第一个Java程序(初识Java)

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【JavaSE_primary】 文章目录1.Java概述1.1什么是Java1.2Java之父2.0第一个Java程序编译运行.class3.0程序如何跑起来的&#xff1f;3.1J…...

vulnhub LordOfTheRoot_1.0.1

总结&#xff1a;端口敲门&#xff0c;CVE-2015-8660提权&#xff0c; 目录 下载地址 漏洞分析 信息收集 端口敲门 网站分析 方法一 ssh登录提权 方法二 下载地址 LordOfTheRoot_1.0.1.ova (Size: 1.6 GB)Download: http://www.mediafire.com/download/m5tbx0dua05szjm…...

MutationObserver与IntersectionObserver

MutationObserver 出现原因&#xff1a;当我们需要监听元素发生变化时&#xff0c;不借助使元素发生变化的业务动作的情况下&#xff0c;使用无污染方式监听非常困难&#xff0c;为了解决这个问题&#xff0c;MutationObserver诞生&#xff01; 概述 可以用来监听DOM的任何变化…...

【ESP 保姆级教程】玩转巴法云篇② ——MQTT设备云,MQTT协议下的数据通信

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-21 ❤️❤️ 本篇更新记录 2023-02-21 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...

植物大战 仿函数——C++

容器适配器 容器适配器不支持迭代器。栈这个东西&#xff0c;让你随便去遍历&#xff0c;是不好的。他是遵循后进先出的。所以他提供了一个街头top取得栈顶数据。 仿函数 仿函数&#xff08;functor&#xff09;是C中一种重载了函数调用运算符&#xff08;operator()&#x…...

【C语言】浮点型数据在内存中的存储

&#x1f680;&#x1f680;&#x1f680; 如果文章对你有帮助不要忘记点赞关注收藏哦&#x1f680;&#x1f680;&#x1f680; 文章目录⭐浮点数在内存中的存储1.1 &#x1f913;举个例子:1.2浮点数存储规则&#x1f308;&#xff1a;对于M与E有一些特别规定1.3解释前面题目&…...

impala中的刷新元数据和刷新表

impala是Cloudera公司主导开发的新型查询系统&#xff0c;它提供SQL语义&#xff0c;能查询存储在Hadoop的HDFS和HBase中的PB级大数据。 虽然Hive系统也提供了SQL语义&#xff0c;但由于Hive底层执行使用的是MapReduce引擎&#xff0c;仍然是一个批处理过程&#xff0c;难以满…...

Vscode创建vue项目的详细步骤

目录 一、概述 操作的前提 二、操作步骤 一、概述 后端人员想在IDEA里面创建一个Vue的项目&#xff0c;但是这非常麻烦&#xff0c;用vscode这个前端专用软件创建就会非常快速。 操作的前提 1.安装vscode软件的步骤&#xff1a;vscode下载和安装教程和配置中文插件&#…...

如何在面试中介绍自己的项目,才能让软件测试面试官无可挑剔,

四、项目 4.1 简单介绍下最近做过的项目 根据自己的项目整理完成&#xff0c;要点&#xff1a; 1&#xff09;项目背景、业务、需求、核心业务的流程 2&#xff09;项目架构&#xff0c;B/S还是C/5&#xff0c;数据库用的什么? 中间件用的什么&#xff1f;后台什么语言开发…...

虹科方案|从 uCPE 到成熟的边缘计算平台

基于开放硬件平台&#xff0c;通用客户端设备 (uCPE) 支持快速添加、集成或删除任意数量的集中管理虚拟功能。 为了增加收入并保持竞争优势&#xff0c;托管服务提供商 (MSP) 和企业正在部署 uCPE 以增强业务敏捷性、加速新服务的引入并提高运营效率。最初&#xff0c;uCPE被部…...

计算机是怎么读懂C语言的?

文章目录前言程序环境翻译环境翻译环境分类编译预处理预处理符号预定义符号#define#undef命令行定义条件编译文件包含头文件包含查找规则嵌套文件包含其他预处理指令编译阶段汇编链接&#x1f389;welcome&#x1f389; ✒️博主介绍&#xff1a;博主大一智能制造在读&#xff…...

hadoop入门介绍及各组件功能运行关系

文章目录Hadoop 组成部分1.HDFS2.MapReduce 架构概述3. yarn 架构概述4.HDFS、YARN、MapReduce三者关系Hadoop 组成部分 1.HDFS Hadoop Distributed File System&#xff0c;简称 HDFS&#xff0c;是一个分布式文件系统。 HDFS 架构概述 主要分为 NameNode (mn):存储文件的元…...

(HP)新手引导使用react-shepherd

1&#xff0c;官方参数文档&#xff1a;https://shepherdjs.dev/docs/tutorial-02-usage.html 2&#xff0c;基本代码 import { ShepherdTour } from react-shepherd; import ./index.less; // 自己的样式文件&#xff0c;用来修改样式 import ./shepherd.less; // 将shephe…...

数据结构:栈和队列(Leetcode20. 有效的括号+225. 用队列实现栈+232. 用栈实现队列)

目录 一.数据结构--栈 1.栈的基本介绍 2.栈的实现 二.数据结构--队列 1.队列的基本介绍 2.队列的实现 三.栈的运用(Leetcode20. 有效的括号225) 1.问题描述 2.问题分析 题解代码&#xff1a; 四.用两个队列实现栈(225. 用队列实现栈 - 力扣&#xff08;Leetcode&a…...

22.2.19周赛双周赛(贪心、记忆化搜索...)

文章目录双周赛98[6359. 替换一个数字后的最大差值](https://leetcode.cn/problems/maximum-difference-by-remapping-a-digit/)[6361. 修改两个元素的最小分数](https://leetcode.cn/problems/minimum-score-by-changing-two-elements/)贪心排序[6360. 最小无法得到的或值](ht…...

2023最新软件测试面试题(带答案)

1. 请自我介绍一下(需简单清楚的表述自已的基本情况&#xff0c;在这过程中要展现出自信&#xff0c;对工作有激情&#xff0c;上进&#xff0c;好学) 面试官您好&#xff0c;我叫###&#xff0c;今年26岁&#xff0c;来自江西九江&#xff0c;就读专业是电子商务&#xff0c;毕…...

小说下载器终极指南:一站式解决100+网站小说保存难题

小说下载器终极指南&#xff1a;一站式解决100网站小说保存难题 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 在数字阅读时代&#xff0c;你是否曾因小说突然下架、网站404或网络中…...

如何用deberta-v3-base-zeroshot-v2.0构建企业级NLP应用?完整教程来了

如何用deberta-v3-base-zeroshot-v2.0构建企业级NLP应用&#xff1f;完整教程来了 【免费下载链接】deberta-v3-base-zeroshot-v2.0 项目地址: https://ai.gitcode.com/hf_mirrors/NingBo_Ascend/deberta-v3-base-zeroshot-v2.0 deberta-v3-base-zeroshot-v2.0是一款基…...

3个关键功能解析:USBToolBox如何简化macOS与Windows的USB端口映射难题

3个关键功能解析&#xff1a;USBToolBox如何简化macOS与Windows的USB端口映射难题 【免费下载链接】tool the USBToolBox tool 项目地址: https://gitcode.com/gh_mirrors/too/tool 在Hackintosh和跨平台开发领域&#xff0c;USB端口映射一直是个令人头疼的技术难题。US…...

FCEUX终极指南:从怀旧游戏到专业调试的完整NES模拟器教程

FCEUX终极指南&#xff1a;从怀旧游戏到专业调试的完整NES模拟器教程 【免费下载链接】fceux FCEUX, a NES Emulator 项目地址: https://gitcode.com/gh_mirrors/fc/fceux FCEUX是一款功能强大的开源NES模拟器&#xff0c;让你在现代电脑上完美重温经典红白机游戏。无论…...

量子软件测试的挑战与优化策略

1. 量子软件测试的挑战与机遇量子计算正在从实验室走向实际应用&#xff0c;随之而来的是对可靠量子软件的需求激增。与传统软件不同&#xff0c;量子程序面临三大独特挑战&#xff1a;首先&#xff0c;量子态的叠加性和纠缠性使得测试变得异常复杂。一个n量子比特系统可以同时…...

机器学习与SHAP在教育公平研究中的应用:精准定位学业困境根源

1. 项目概述&#xff1a;当机器学习遇见教育公平&#xff0c;我们如何精准定位学业困境的根源&#xff1f;在拉丁美洲的教育研究领域&#xff0c;一个长期困扰政策制定者和研究者的核心问题是&#xff1a;究竟是什么因素&#xff0c;在复杂的社会经济背景下&#xff0c;系统性地…...

巨量投放总结

巨量商务管理平台 &#xff1a; https://business.oceanengine.com 巨量广告投放平台&#xff1a; https://ad.oceanengine.com 商务管理平台 账户 广告组 计划 广告投放平台 层级关系: 广告组 -> 计划 -> 创意 对应FB: 系列 - > 广告组 -> 广告...

flameshow性能优化技巧:如何快速定位Go程序中的CPU热点

flameshow性能优化技巧&#xff1a;如何快速定位Go程序中的CPU热点 【免费下载链接】flameshow A terminal Flamegraph viewer. 项目地址: https://gitcode.com/gh_mirrors/fl/flameshow &#x1f525; 想要快速定位Go程序中的性能瓶颈吗&#xff1f;flameshow是一个强大…...

基于雷达与光敏传感器的低功耗智能窗防设备设计与实现

1. 项目概述&#xff1a;一个基于雷达与光敏的智能窗防设备几年前&#xff0c;我因为一次短暂的出差&#xff0c;家里空置了几天&#xff0c;回来后就一直琢磨着怎么给家里的窗户加点“动静”。市面上的智能安防摄像头固然好&#xff0c;但要么需要复杂的布线&#xff0c;要么云…...

如何快速解锁艾尔登法环帧率限制:终极性能优化指南

如何快速解锁艾尔登法环帧率限制&#xff1a;终极性能优化指南 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_mirrors/el/EldenR…...