Python学习笔记 - 探索集合Set

news2024/11/24 15:22:30

尊敬的各位,我是Mr.数据杨,非常高兴和你们一起走进Python的世界。今天,让我们一起探讨Python中神奇的“集合”。你们是否读过《三国演义》?你们应该记得那场赫赫有名的“桃园三结义”吧?那让我们以此为例,来深入理解Python集合的奥秘。

首先,什么是集合?就像桃园中的刘备、关羽、张飞三人一样,集合是一个由不同元素组成的“群体”。这就是“集合的定义”。

而“构建集合的方式”,就像那场三人结义的过程,就像刘备、关羽、张飞的名字被写进了我们的故事中一样,我们也可以通过多种方式,将元素加入到我们的Python集合中。

接下来,我们要注意,集合是“自动排序且元素不可变”的。就好像三人虽然立誓为兄弟,但每个人的身份、性格和能力都是独一无二的,无法改变。同样,无论我们如何添加元素,集合中的元素都会自动排序,并且一旦添加,就不能更改。

然后我们来看“集合的大小和成员资格”。在《三国演义》中,虽然刘备、关羽、张飞三人的结义兄弟只有三个,但他们的影响力远超过这个数字。在Python中,我们可以通过简单的命令来查看集合的大小,也就是元素的数量,以及某个元素是否属于该集合。

最后,让我们来看“集合冻结”。你们是否记得刘备的一句誓言:“同生共死,说者何忍!”呢?就像他们的兄弟之情一样,有时我们也需要将集合“冻结”,使其内容无法更改,以保证数据的安全。

在这个故事中,集合如同三英雄,每个英雄都有自己的特点,就像集合中的每一个元素。希望你们能够在今天的分享中,更深入地理解Python中的集合,享受编程的乐趣!

文章目录

  • 集合的定义
    • 构建集合的方式
    • 集合自动排序且元素不可变
    • 集合的大小和成员资格
  • 集合冻结

集合的定义

集合是无序的,并且元素是唯一的,集合本身可以修改,但集合中包含的元素必须是不可变类型。

集合定义

构建集合的方式

使用set()函数可以构建集合,构建的set数据会自动进行去重。

列表方式

x = set(['曹操', '孫権', '劉備', '曹操', '司馬懿'])
x
# 输出: {'司馬懿', '曹操', '孫権', '劉備'}

元组方式

x = set(('曹操', '孫権', '劉備', '曹操', '司馬懿'))
x
# 输出: {'司馬懿', '曹操', '孫権', '劉備'}

字符串方式

s = '董卓'
list(s)
# 输出: ['董', '卓']
set(s)
# 输出: {'董', '卓'}

集合自动排序且元素不可变

集合中的元素是无序的,但在输出时,集合会自动进行排序。另外,集合中的元素必须是不可变类型。

x = {42, '曹操', (1, 2, 3), 3.14159}
x
# 输出: {42, '曹操', 3.14159, (1, 2, 3)}

注意: 列表和字典类型不能被集合直接包含。

a = [1, 2, 3]
{a}
# 输出:
# Traceback (most recent call last):
#   File "<stdin

>", line 1, in <module>
# TypeError: unhashable type: 'list'

d = {'a': 1, 'b': 2}
{d}
# 输出:
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# TypeError: unhashable type: 'dict'

集合的大小和成员资格

可以使用方法 len() 获取集合的大小,使用关键字 innot in 来判断一个元素是否属于集合。

x = {'曹操', '孫権', '劉備'}

len(x)
# 输出: 3

'孫権' in x
# 输出: True

'司馬懿' in x
# 输出: False

集合冻结

被冻结集合是一种不可变且不可操作的集合类型,可以使用frozenset来创建。

x = frozenset(['曹操', '孫権', '劉備'])

x
# 输出: frozenset({'曹操', '劉備', '孫権'})

len(x)
# 输出: 3

x & {'劉備', '司馬懿', '董卓'}
# 输出: frozenset({'劉備'})

尝试修改被冻结集合的方法将会失败。



x = frozenset(['曹操', '孫権', '劉備'])

x.add('司馬懿')
# 输出: AttributeError: 'frozenset' object has no attribute 'add'

x.pop()
# 输出: AttributeError: 'frozenset' object has no attribute 'pop'

x.clear()
# 输出: AttributeError: 'frozenset' object has no attribute 'clear'

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

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

相关文章

Windows动态链接库的生成和使用

工程需要&#xff0c;最近在编一组Windows上的动态链接库给Python调用。之前做过Linux下C动态库的编译&#xff0c;并提供给Python调用&#xff0c;Windows下的编译跟Linux还是有些差距&#xff0c;因此花了一点时间跑通&#xff0c;在这里记录一下。 为了完整对比&#xff0c…

Hive on Spark环境搭建

Hive 引擎简介 Hive 引擎包括&#xff1a;默认 MR、tez、spark 最底层的引擎就是MR &#xff08;Mapreduce&#xff09;无需配置&#xff0c;Hive运行自带 Hive on Spark&#xff1a;Hive 既作为存储元数据又负责 SQL 的解析优化&#xff0c;语法是 HQL 语法&#xff0c;执行…

(2.54mm)TSM-120-04-S-DV-P-TR方形接线柱针脚、ADRF5545ABCPZN(通用)射频前端 SPDT

TSM-120-04-S-DV-P-TR (2.54mm) 表面安装.025"方形接线柱针脚是板对板连接器&#xff0c;有单排、双排或三排方形接线柱端子可供选择&#xff0c;带直通、直角或混合技术引脚。这些高度可靠的坚固针脚有垂直和水平两种方向&#xff0c;在混合气流 (MFG) 环境中可使用10年。…

【C语言实现简易ATM】上个C语言程序设计课,我成产品经理了?

博主简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的人。 博主主页&#xff1a;陈童学哦 所属专栏&#xff1a;C语言程序设计实验项目 如果本文对你有所帮助的话&#xff0c;还希望可以点赞&#x1f44d;收藏&#x1f4c2;支持一下…

2023年京东618满300减50是全品类吗?满减叠卷怎么用?

2023年京东618满300减50是全品类吗?满减叠卷怎么用? 京东平台上有着比较多的卖家开店&#xff0c;在对店铺进行运营的过程中&#xff0c;很多卖家都会参与平台的一些活动&#xff0c;这样能够有效的将产品推广出去&#xff0c;对于618大促活动也是属于其中活动之一&#xff0…

代码随想录第52天

1.最长递增子序列 接下来&#xff0c;我们依然用动规五部曲来详细分析一波&#xff1a; dp[i]的定义 本题中&#xff0c;正确定义dp数组的含义十分重要。 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 为什么一定表示 “以nums[i]结尾的最长递增子序” &…

软考A计划-电子商务设计师-专业英语

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

高压侧电流检测电路及仿真

高压侧电流检测电路仿真 电路图如下 主要设计思想&#xff0c;通过两组电阻将高压侧的共模电压降到运放&#xff08;此处也可以使用单电源运放&#xff09;的工作电压范围内。然后在进行二次放大。主要放大倍数取决于第二级放大侧电阻比值。因此如果需要减小功耗&#xff0c;可…

JAVA数组基础

目录 一、使用方式 1-动态初始化 ①先声明数组 ② 创建数组 ③分配方式 二、使用方式 2-静态初始化&#xff08;直接在声明的同时初始化{ } &#xff09; 三、数组使用注意事项和细节 四、数组两种初始化方式都是将内存空间分配到堆上面的 一、使用方式 1-动态初始化 …

助力金融科技创新 同创永益受邀参加2023 INNO CHINA中国产业创新大会

2023 INNO CHINA中国产业创新大会-金融科技创新论坛于2023年5月10日在北京大学中关村新园召开。本次金融科技创新论坛由北大创新评论主办&#xff0c;同创永益受邀参加。来自银行、保险、证券等金融行业的多位专家、学者齐聚大会现场&#xff0c;共同探讨金融科技发展新趋势、金…

复合型人才

一、为什么需要复合型人才 在社会的大环境影响下&#xff0c;不同行业所展现的交叉属性越来越强&#xff0c;因此单一型人才已经不满足当前的企业需求&#xff0c;复合型人才逐渐成为市场上的主流&#xff1a;即不仅要“精”通&#xff0c;更要“全”面。 人才需求是由市场的…

长尾词挖掘,如何选择精准的长尾词优化?

长尾词的挖掘也是一门大学问&#xff0c;它存在多种不同的方法。最常用的方法是把关键词直接放搜索引擎的搜索框搜索和使用长尾词挖掘工具这两种。 以运动水壶为例。 关键词直接放搜索引擎的搜索框搜索&#xff0c;结果如下&#xff1a; 使用长尾词挖掘工具&#xff0c;…

【C++笔记总结】面向对象编程——封装 |C++

文章目录 前言一、类的封装1.1、公有&#xff0c;私有&#xff0c;保护1.2、类的定义和类的实现相分离1.3、构造函数&#xff0c;析构函数&#xff0c;拷贝构造函数1.4、静态数据成员和静态成员函数1.5、友元函数&#xff0c;友元类 二、类的实现——对象2.1、对象的静态分配&a…

【SpringCloud——Elasticsearch(中)】

一、DSL查询语法以及整合JAVA代码使用 以下操作案例均基于上篇的hotel索引库及其数据进行。 1、查询基本语法 GET /indexName/_search {"query": {"查询类型":{"查询条件":"条件值"}} } 2、查询所有 2.1、DSL语句 #查询所有 GET …

Java并发编程面试题——线程池

目录 1.什么是线程池&#xff1f;有什么优缺点&#xff1f;2.创建线程池的方式有哪些&#xff1f;2.1.通过 Executor 框架的工具类 Executors 来创建不同类型的线程池2.2.使用 ThreadPoolExecutor 类自定义线程池2.3.注意事项 3.自定义线程池时有哪些参数&#xff1f;它们各有说…

笔试强训 Day 7

选择题&#xff1a; 1.在&#xff08;&#xff09;情况下适宜采用 inline 定义内联函数 A 函数体含有循环语句 B 函数体含有递归语句C 函数代码少、频繁调用 D 函数代码多&#xff0c;不常调用 复习一下内联函数 在编译阶段&#xff0c;会将内联函数展开 —— 将函数调用替换成…

四、若依(前后端分离)项目构建docker 镜像

若依(前后端分离&#xff09;项目构建docker 镜像 1. 构建好ruoyi-admin.jar包&#xff0c;上传到服务器项目目录下 2. 创建conf目录将若依项目&#xff08;Spring boot &#xff09;配置文件修改好&#xff0c;上传存入conf目录 注意&#xff1a;这里的地址不能写127.0.0.1和…

ur5在gazebo中仿真的官方源码浅析

一 复现 好久之前初学rosgazebo机械臂仿真的时候总有些懵&#xff0c;用的是ur5机械臂&#xff0c;现在回过头来看好像看懂了一些&#xff0c;故重新理清了一下功能包的逻辑&#xff0c;方便查阅。 官方源码 本文参考 ubuntu16.04安装UR3/UR5/UR10机械臂的ROS驱动并实现gazebo…

chatgpt赋能python:Python列表从后往前遍历

Python列表从后往前遍历 作为一门广泛应用于数据科学、机器学习和Web开发的高级编程语言&#xff0c;Python为开发人员和科学家们提供了很多便利。在Python里面&#xff0c;列表是一种非常常见的数据结构&#xff0c;它允许开发人员存储和处理多个元素。但是&#xff0c;有时候…

5款提高工作效率的无广告软件

今天推荐一些可以大幅度提升办公效率的小软件&#xff0c;安全无毒&#xff0c;下载简单&#xff0c;最重要的是没有广告&#xff01; 1.照片处理——Darktable Darktable是一款用于处理和管理数码照片的工具。它可以让你对RAW格式的照片进行非破坏性的编辑,并提供多种模块和…