全网最全Python系列教程(非常详细)---集合讲解(学Python入门必收藏)

news2024/11/24 12:57:53

🧡🧡🧡这篇是关于Python中集合的讲解,涉及到以下内容,欢迎点赞和收藏,你点赞和收藏是我更新的动力🧡🧡🧡

1、集合是什么?
2、集合应该怎么去定义?
3、集合有哪些函数和方法可以使用?

文章目录

  • 1、集合概念
  • 2、集合定义
    • 2.1、可变集合定义
    • 2.2、不可变集合定义
    • 4.3、定义集合注意点
  • 3、单一集合之间的操作
    • 3.1、可变集合的操作
      • 3.1.1、增
      • 3.1.2、删
        • 3.1.2.1、remove()
        • 3.1.2.2、discard()
        • 3.1.2.3、pop()
        • 3.1.2.4、clear()
      • 3.1.3、改
      • 3.1.4、查
    • 3.2、不可变集合的操作
  • 4、集合之间操作
    • 4.1、交集
    • 4.2、并集
    • 4.3、差集
  • 5、判定
    • 5.1、isdisjoint()
    • 5.2、issuperset()
    • 5.3、issubset()

1、集合概念

在这里插入图片描述
集合是无序的、不可以随机访问的,集合中的元素不可以重复

在这里插入图片描述

在这里插入图片描述

集合分为可变集合和不可变集合
在这里插入图片描述


2、集合定义

2.1、可变集合定义

在这里插入图片描述

set1 = {2, 3, 1, 4, 5, 1, 2}

set2 = set()  # 创建一个空集合
set3 = set('Python')

set4 = set(i for i in range(5))
print(set4)

set函数详解
在这里插入图片描述

2.2、不可变集合定义

在这里插入图片描述

set1 = frozenset('Python')

print(set1, type(set1))

set2 = frozenset(i for i in range(10))
print(set2, type(set2))

# 当frozenset中为字典的时候,会提取key作为set的元素
set3 = frozenset({'name': 'chris', 'id': 450, 'address': 'China'})
print(set3, type(set3))

4.3、定义集合注意点

  1. 创建一个空的集合时,需要使用set()函数或者frozenset()函数,不能直接使用{}
    在这里插入图片描述
# 直接写一个花括号是创建的是一个字典
dict1 = {}
print(dict1, type(dict1))

set1 = set()
set2 = frozenset()

print(type(set1), type(set2))
  1. 集合中的元素必须是可以哈希的值
    在这里插入图片描述
    简单理解在集合中元素必须是不可变数据类型
set1 = {[1, 2, 30], 10, 20}

print(set1)

在这里插入图片描述

  1. 如果集合中的元素重复出现,会变为一个值
    在这里插入图片描述
set1 = {1, 2, 3, 1, 2, 3}

print(set1)

在这里插入图片描述


3、单一集合之间的操作

3.1、可变集合的操作

3.1.1、增

在这里插入图片描述

set1 = {1, 2, 3}

set1.add('python')

print(set1)

3.1.2、删

3.1.2.1、remove()

在这里插入图片描述

set1 = {1, 2, 3}

set1.remove(3)
print(set1)
3.1.2.2、discard()

在这里插入图片描述

set1 = {1, 2, 3}

set1.discard(1000)

在这里插入图片描述

3.1.2.3、pop()

在这里插入图片描述

set1 = {1, 2, 3}

val1 = set1.pop()
print(val1)
3.1.2.4、clear()

在这里插入图片描述

set1 = {1, 2, 3}

set1.clear()

print(set1)

3.1.3、改

在这里插入图片描述

3.1.4、查

在这里插入图片描述
集合是一个无序的类型,没有所谓的下标

在这里插入图片描述

set1 = {1, 2, 3}

# 使用for循环进行遍历
for val in set1:
    print(val)


# 创建一个迭代器
# next()函数可以访问迭代器中的元素
iter1 = iter(set1)
print(next(iter1))

# 迭代器也是可迭代对象
for val in iter1:
    print(val)

在这里插入图片描述

3.2、不可变集合的操作

不可变集合首先是一个不可变的,所以没有增、删、改操作

set1 = frozenset('python')
print(set1)

set1.pop()

在这里插入图片描述

在这里插入图片描述
具体可以参考可变集合类型的查操作


4、集合之间操作

4.1、交集

在这里插入图片描述

set1 = {'p', 'y', 't', 1, 2, 3}
str1 = '123'
str2 = 'py'

# 只能判定字符串中的非数字
print(set1.intersection(str1))  # set()
print(set1.intersection(str2))  # {'p', 'y'}

# 会先将其他数据类型转换为集合,再和集合求交集,所以必须是一个可以hash的值  
print(set1.intersection([1, 2, [1, 2]]))  # TypeError: unhashable type: 'list'

在这里插入图片描述

在这里插入图片描述

set1 = {'p', 'y', 't', 1, 2, 3}
str1 = '123'
str2 = 'py'

set2 = {'p', 'y', 2, 1}
print(set1 & set2)

print(set1 & str1)

在这里插入图片描述

set1 = {'p', 'y', 't', 1, 2, 3}
str1 = '123'
str2 = 'py'

# intersection_update()方法,计算完交集之后,会再次赋值给原对象,所以会修改原对象的值
set2 = {'p', 'y', 2, 1}
set1.intersection_update(set2)
print(set1)

set1.intersection_update(str1)
print(set

4.2、并集

在这里插入图片描述

4.3、差集

在这里插入图片描述


5、判定

Python集合之间的判定操作和数学上的判定操作类似,存在判定两个集合是否相交、一个集合是否包含另一个集合、一个集合是否包含于两一个集合

5.1、isdisjoint()

在这里插入图片描述

set1 = {'p', 'y', 't', 1, 2, 3}
set2 = {'p', 1, 2}

print(set1.isdisjoint(set2))

5.2、issuperset()

在这里插入图片描述

5.3、issubset()

在这里插入图片描述

注意:当可变集合和不可变集合在一起做交集、并集之类的运算时候,最后集合类型取决于运算符左侧的集合类型
在这里插入图片描述


😁😁😁觉得对自己有帮助的小伙伴可以点个赞哦😁😁😁

👉👉👉有误的地方也可以在评论区讨论哦👈👈👈


往期推荐
🚀🚀🚀全网最全Python系列教程(非常详细)—数值篇讲解(学Python入门必收藏)🚀🚀🚀
🚀🚀🚀全网最全Python系列教程(非常详细)—字符串讲解(学Python入门必收藏)🚀🚀🚀
🚀🚀🚀全网最全Python系列教程(非常详细)—列表讲解(学Python入门必收藏))🚀🚀🚀
🚀🚀🚀全网最全Python系列教程(非常详细)—元组讲解(学Python入门必收藏)))🚀🚀🚀
🚀🚀🚀全网最全Python系列教程(非常详细)—字典讲解(学Python入门必收藏)))🚀🚀🚀

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

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

相关文章

从零手搓一个【消息队列】实现数据的硬盘管理和内存管理(线程安全)

文章目录 一、硬盘管理1, 创建 DiskDataCenter 类2, init() 初始化3, 封装交换机4, 封装队列5, 关于绑定6, 关于消息 二、内存管理1, 数据结构的设计2, 创建 MemoryDataCenter 类3, 关于交换机4, 关于队列5, 关于绑定6, 关于消息7, 恢复数据 三、小结 创建 Spring Boot 项目, S…

Xcode 超简单实用小秘技让撸码进入新境界

概览 Xcode 是开发  应用不可或缺的王牌主力军,虽然 Xcode 中一些常用使用姿势想必大家都已驾轻就熟,但其中仍有一些隐藏宝藏小技巧不为人知。 充分挖掘它们可以极大加速和方便秃头码农们日常的撸码行为。 一般的,它们分为两类&#xff…

机器人制作开源方案 | 四轴飞行器

1. 概述 基于探索者搭建的模块化四轴飞行器研究平台,采用独特的设计方式,可实现在室内完成对四轴飞行器、无人机等运动控制的原理研究,以及学习飞行控制的原理知识。 2. 组装 请按照下图进行机架的组装。 整体图 请解压文末资料中的 /软件/Mi…

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— Web APIs(一)

思维导图 学习目标 变量声明 一、Web API 基本认知 作用和分类 什么是DOM DOM树 DOM对象 二、获取DOM对象 三、操作元素内容 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compa…

基于Java的实验室预约管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

【数据结构】选择排序 堆排序(二)

目录 一&#xff0c;选择排序 1&#xff0c;基本思想 2&#xff0c; 基本思路 3&#xff0c;思路实现 二&#xff0c;堆排序 1&#xff0c;直接选择排序的特性总结&#xff1a; 2&#xff0c;思路实现 3&#xff0c;源代码 最后祝大家国庆快乐&#xff01; 一&#xf…

设计模式8、装饰者模式 Decorator

解释说明&#xff1a;动态地给一个对象增加一些额外的职责。就扩展功能而言&#xff0c;装饰模式提供了一种比使用子类更加灵活的替代方案 抽象构件&#xff08;Component&#xff09;&#xff1a;定义一个抽象接口以规范准备收附加责任的对象 具体构件&#xff08;ConcreteCom…

10OpenMP

OpenMP概述 通过线程实现并行化&#xff0c;与Pthread一样&#xff0c;是基于线程的共享内存库 与Pthread的不同 简而言之&#xff1a; Pthread更加底层&#xff0c;需要用户自己定义每一个线程的行为&#xff0c;OpenMP虽然更加简单&#xff0c;但是底层的线程交互实现很难 …

【单片机】13-实时时钟DS1302

1.RTC的简介 1.什么是实时时钟&#xff08;RTC&#xff09; &#xff08;rtc for real time clock) &#xff08;1&#xff09;时间点和时间段的概念区分 &#xff08;2&#xff09;单片机为什么需要时间点【一定的时间点干什么事情】 &#xff08;3&#xff09;RTC如何存在于…

【Git】Git 原理和使用

Git 一、Git 本地仓库1. 本地仓库的创建2. 配置 Git3. 工作区、暂存区、版本库4. 添加文件5. 查看 .git 文件6. 修改文件7. 版本回退8. 撤销修改9. 删除文件 二、分支管理1. 理解分支2. 创建分支3. 切换分支4. 合并分支5. 删除分支6. 合并冲突7. 分支管理策略8. bug 分支9. 强制…

基于Java的厨艺交流平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

JavaScript Web APIs第三天笔记

Web APIs - 第3天 进一步学习 事件进阶&#xff0c;实现更多交互的网页特效&#xff0c;结合事件流的特征优化事件执行的效率 掌握阻止事件冒泡的方法理解事件委托的实现原理 事件流 事件流是对事件执行过程的描述&#xff0c;了解事件的执行过程有助于加深对事件的理解&…

数据结构刷题(三十三):完全背包最小值情况。322. 零钱兑换、279. 完全平方数

题目一&#xff1a; 322. 零钱兑换https://leetcode.cn/problems/coin-change/ 思路&#xff1a;完全背包问题&#xff0c;求解最小组合数。dp[j]&#xff1a;凑足总额为j所需钱币的最少个数为dp[j]。同时需要确保凑足总金额为0所需钱币的个数一定是0&#xff0c;那么dp[0] 0…

如果只是用php纯做api的话,给移动端做数据接口,是否需要用php框架?

API接口对接是现代软件开发中不可或缺的一部分&#xff0c;它允许不同的应用程序之间进行数据交换和服务调用。在PHP中&#xff0c;可以使用多种方式实现API接口的对接&#xff0c;包括基于HTTP协议的传统方法以及现代的API客户端库客户端库客户端库等。 一、实现API接口的对接…

Web开发-登录页面设计流程

目录 确定页面设计样式创建js文件jquery.min.jsbootstrap.min.js 创建css文件bootstrap.min.cssmaterialdesignicons.min.cssstyle.min.css 创建ftl文件header.ftlfooter.ftllogin.ftlcss部分html部分 确定页面设计样式 可以自己用“画图”等软件进行设计&#xff0c;也可以打…

步进电机只响不转

我出现问题的原因是相位线接错。 我使用的滑台上示17H的步进电机&#xff0c;之前用的是57的步进电机。 57步进电机的相位线是A黑、A-绿、B红、B-蓝。 17步进电机的相位线是A红、A-绿、B黑、B-蓝。 这两天被一个问题困扰了好久&#xff0c;在调试步进电机开发板的时候电机发生…

ubuntu安装ROS

进官网&#xff0c;选版本&#xff0c;操作系统 ROS: Home 开始安装&#xff1a; noetic/Installation/Ubuntu - ROS Wiki Installation Configure your Ubuntu repositories Configure your Ubuntu repositories to allow "restricted," "universe,"…

银行金融科技岗笔试题资料大总结

程序员进银行科技岗——简单总结_银行程序员 无水印&#xff0c;可直接打印使用。 中国银行 通用资料 视频资料

IPV6(IPV6,RIPng的配置以及手工配置IPV4隧道)

目录 实验一&#xff1a;IPv6的基本配置 实验二&#xff1a;RIPng基本配置 RIPng RIPng的工作机制 实验三&#xff1a;手工配置IPV4隧道 实验一&#xff1a;IPv6的基本配置 案例如下&#xff1a; 各部分配置如下 配置路由器RTA <Huawei>sys Enter system view, …

【论文笔记】DiffusionTrack: Diffusion Model For Multi-Object Tracking

原文链接&#xff1a;https://arxiv.org/abs/2308.09905 1. 引言 多目标跟踪通常分为两阶段的检测后跟踪&#xff08;TBD&#xff09;和一阶段的联合检测跟踪&#xff08;JDT&#xff09;。TBD对单帧进行目标检测后&#xff0c;使用跟踪器跨帧关联相同物体。使用的跟踪器包括使…