Python基础-数据类型之集合

news/2024/4/27 9:53:08/文章来源:https://blog.csdn.net/weixin_48323589/article/details/129146683

一、集合的定义

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

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'}

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RFID盘点软件为企业提供RFID固定资产管理方案

随着科技的发展&#xff0c;固定资产管理系统也经过了一些变革&#xff0c;从刚开始的单机版逐渐发展成SaaS版本&#xff0c;物联网版本等。从刚开始只支持条形码到支持二维码、RFID码。RFID固定资产管理系统上线后&#xff0c;通过给每个实物资产绑定一个RFID码标签后&#xf…

接口测试流程是怎样的?

接口测试流程是怎样的&#xff1f;总所周知&#xff0c;接口测试流程是怎样的&#xff1f;总所周知接口测试在软件测试中是一个非常重要的一部分&#xff0c;其主要目的是测试应用程序的接口是否能够按照规范要求与其他系统或组件进行交互&#xff0c;以及在不同负载条件下接口…

推荐一款新的自动化测试框架:DrissionPage

今天给大家推荐一款基于Python的网页自动化工具&#xff1a;DrissionPage。这款工具既能控制浏览器&#xff0c;也能收发数据包&#xff0c;甚至能把两者合而为一&#xff0c;简单来说&#xff1a;集合了WEB浏览器自动化的便利性和 requests 的高效率。 一、DrissionPage产生背…

vue3-element-admin搭建

vue3-element-admin 是基于 vue-element-admin 升级的 Vue3 Element Plus 版本的后台管理前端解决方案&#xff0c;是 有来技术团队 继 youlai-mall 全栈开源商城项目的又一开源力作功能清单技术栈清单技术栈 描述官网Vue3 渐进式 JavaScript 框架 https://v3.cn.vuejs.org/Ty…

经纬度坐标点和距离之间的转换

1.纬度相同&#xff0c;经度不同 在纬度相同的情况下&#xff1a; 经度每隔0.00001度&#xff0c;距离相差约1米&#xff1b; 每隔0.0001度&#xff0c;距离相差约10米&#xff1b; 每隔0.001度&#xff0c;距离相差约100米&#xff1b; 每隔0.01度&#xff0c;距离相差约1000米…

基于龙芯 2K1000 的嵌入式 Linux 系统移植和驱动程序设计(一)

2.1 需求分析 本课题以龙芯 2K1000 处理器为嵌入式系统的处理器&#xff0c;需要实现一个完成的嵌入式软件系统&#xff0c;系统能够正常启动并可以稳定运行嵌入式 Linux。设计网络设备驱 动&#xff0c;可以实现板卡与其他网络设备之间的网络连接和文件传输。设计 PCIE 设备驱…

我的 System Verilog 学习记录(1)

引言 技多不压身&#xff0c;准备开始学一些 System Verilog 的东西&#xff0c;充实一下自己&#xff0c;这个专栏的博客就记录学习、找资源的一个过程&#xff0c;希望可以给后来者一些借鉴吧&#xff0c;IC找工作的都加把油&#xff01; 本文是准备先简单介绍一下环境搭建…

洛谷P1125 [NOIP2008 提高组] 笨小猴 C语言/C++

[NOIP2008 提高组] 笨小猴 题目描述 笨小猴的词汇量很小&#xff0c;所以每次做英语选择题的时候都很头疼。但是他找到了一种方法&#xff0c;经试验证明&#xff0c;用这种方法去选择选项的时候选对的几率非常大&#xff01; 这种方法的具体描述如下&#xff1a;假设 maxn\…

JAVA集合之并发集合

从Java 5 开始&#xff0c;在java.util.concurrent 包下提供了大量支持高效并发访问的集合接口和实现类&#xff0c;如下图所示&#xff1a; 以CopyOnWrite开头的集合即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候&#xff0c;不直接往容器添加&#xff0c;而…

直播预告 | 嵌入式BI如何将数据分析真正融入业务流程

在信息化高速发展的今天&#xff0c;数据成为企业最有价值的资产之一。而数据本身很难直接传递有价值的信息&#xff0c;只有通过对数据进行挖掘、分析&#xff0c;才能让数据真正成为生产力。 商业智能&#xff08;BI&#xff09;应运而生&#xff0c;可以帮助企业更好地从数…

Julia 交互式命令窗口

执行 julia 命令可以直接进入交互式命令窗口&#xff1a; $ julia __ _ _(_)_ | Documentation: https://docs.julialang.org(_) | (_) (_) |_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.| | | | | | |/ _ | || |…

nginx的介绍及源码安装

文章目录前言一、nginx介绍二、nginx应用场合三、nginx的源码安装过程1.下载源码包2.安装依赖性-安装nginx-创建软连接-启动服务-关闭服务3.创建nginx服务启动脚本4.本实验---纯代码过程前言 高可用&#xff1a;高可用(High availability,缩写为 HA),是指系统无中断地执行其功…

win7下安装postgreSQL教程

系统环境&#xff1a;Windows 7 旗舰版 64位操作系统 安装版本&#xff1a;postgresql-9.1.4-1-windows-x64 安装步骤&#xff1a; 1、下载系统对应的软件版本&#xff1b; 2、双击“postgresql-9.1.4-1-windows-x64.exe”打开安装窗口&#xff1b; 3、Welcome页&#xff0c;…

图解操作系统

硬件结构 CPU是如何执行程序的&#xff1f; 图灵机的工作方式 图灵机的基本思想&#xff1a;用机器来模拟人们用纸笔进行数学运算的过程&#xff0c;还定义了由计算机的那些部分组成&#xff0c;程序又是如何执行的。 图灵机的基本组成如下&#xff1a; 有一条「纸带」&am…

allure简介

allure介绍allure是一个轻量级&#xff0c;灵活的&#xff0c;支持多语言的测试报告工具多平台的&#xff0c;奢华的report框架可以为dev/qa提供详尽的测试报告、测试步骤、log也可以为管理层提供high level统计报告java语言开发的&#xff0c;支持pytest,javaScript,PHP等可以…

C语言——动态内存管理

目录0. 思维导图&#xff1a;1. 为什么存在动态内存分配2. 动态内存函数介绍2.1 malloc和free2.2 calloc2.3 realloc3. 常见的动态内存错误3.1 对NULL指针的解引用操作3.2 对动态内存开辟的空间越界访问3.3 对非动态开辟内存使用free释放3.4 使用free释放一块动态开辟内存的一部…

django+celery+ RabbitMQ自定义多个消息队列

关于django celery的使用网上有很多文章&#xff0c;本文就不多做更多的说明。 本文使用版本 python3.8.15 Django3.2.4 celery5.2.7celery.py from __future__ import absolute_import, unicode_literals import os from celery import Celery from kombu import Exchange, …

毕业后想从事软件测试,现在需要学习哪些内容呢

在你选择学习之前&#xff0c;要先考虑一下这个是不是你喜欢的发展方向&#xff0c;而不是只听别人推荐就直接做了选择先了解下软件测试是做什么的以及未来发展前景&#xff0c;最后才是如何自学 软件测试就是在测试这个软件是不是能够完全按照需求运行。软件测试岗再简单点说…

Windows启动docker客户端报错:Hardware assisted virtualization and enabled in the BIOS

报错内容 : &#x1f31f;1.在控制面板中点击 启用或关闭Windows功能&#x1f31f;2.勾选如下复选框&#x1f31f;3.Windows功能中没有Hyper-V复选框怎么办?(如果有请跳过此步骤)此时不同人的电脑还会出现没有Hyper-V选项的情况1.打开 Windows PowerShell&#xff0c;输入 sys…

如何效率搭建企业流程系统?试试低代码平台吧

编者按&#xff1a;本文介绍了一款可私有化部署的低代码平台&#xff0c;可用于搭建团队流程管理体系&#xff0c;并详细介绍了该平台可实现的流程管理功能。关键词:可视化设计&#xff0c;集成能力&#xff0c;流程审批&#xff0c;流程调试天翎是国内最早从事快速开发平台研发…