Python入门教程+项目实战-13.1节-集合基础概念

news2024/11/17 12:47:48

目录

13.1.1 理解集合类型

13.1.2 集合的类型名

13.1.3 集合的定义

13.1.4 在循环中遍历集合

13.1.5 集合的元素输出顺序

13.1.6 知识要点

13.1.7 系统学习python


13.1.1 理解集合类型

集合类型与字典类型非常接近,Python中的集合类型也是用{}符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。

集合与字典一样,底层实现基于哈希表:

# 定义一个集合变量stars
stars = {"陈法蓉", "陈德蓉"}

在上文代码中定义了一个集合类型变量stars, 在stars中包含两个元素,集合中的元素相当于字典中的键名,也就是说,Python中的集合类型是键名的数据集合。既然Python中的集合是键名的数据集合,那么集合中的元素必须是静态的、可哈希的数据类型,我们可以在交互模式中进行验证:

>>> stars ={"陈法蓉", "陈德容", ["李嘉欣"]}

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

TypeError: unhashable type: 'list'

由输出可知,在定义集合类型的变量时,由于元素中包含可变的数据类型(列表),Python解释器抛出了类型错误的异常信息。

13.1.2 集合的类型名

在交互模式中通过type来输出集合的类型名:

>>> stars = {"陈法蓉", "陈德蓉"}

>>> type(stars)

<class 'set'>

从输出可知,字典的类型名为set。集合中的键名同样是唯一的,对列表进行显式类型转换以后,可以自动去掉重复的元素:

# __desc__ = 使用集合类型进行显式转换,对列表中的元素进行去重
 
# 在列表中可以包含重复的元素
stars = ["陈法蓉", "陈德蓉", "陈法蓉", "陈德蓉"]
 
stars = set(stars)
# stars的输出为{'陈德容', '陈法蓉'}

13.1.3 集合的定义

对集合进行定义,主要有对象定义法和直接定义法。

(1) 对象定义法

集合的类型名是set,可以直接在交互模式中执行help(set)来查找set的定义及用法:

class set(object)

|  set() -> new empty set object

|  set(iterable) -> new set object

|

|  Build an unordered collection of unique elements.

从交互模式的输出中,可看到如下两个定义集合的构造方法:

(1) set()

(2) set(iterable)

1.set()

使用set()构造一个空的集合。

代码实例:

# __desc__ = 通过set()构造一个空的集合
 
# 定义一个空的集合
stars = set()
 
# 空值在条件判断中会自动转换为布尔类型False
if stars:
  print("there are stars in stars")
else:
  print("there is no star in stars")

2. set(iterable)

这里的iterable表示的是可迭代对象,可迭代对象中的元素必须是不可变的数据类型,否则会抛出类型错误的异常信息。迄今为止学过的可迭代对象:字符串,列表,元组,字典,集合

代码实例:

# __desc__ = 通过可迭代对象来构造集合
 
# 1.通过字符串类型来构造集合
alphabet = set("abcdefg")
# alphabet的输出为{'e', 'c', 'b', 'a', 'g', 'd', 'f'}
 
# 2.通过列表类型来构造集合
alphabet = set(['e', 'c', 'b', 'a', 'g', 'd', 'f'])
# alphabet的输出为{'e', 'c', 'b', 'a', 'g', 'd', 'f'}
 
# 3.通过元组类型来构造集合
alphabet = set(('e', 'c', 'b', 'a', 'g', 'd', 'f'))
# alphabet的输出为{'e', 'c', 'b', 'a', 'g', 'd', 'f'}
 
# 4.通过字典类型来构造集合
alphabet = set({'e': 1, 'c': 1, 'b': 1, 'a': 1, 'g': 1, 'd': 1, 'f': 1})
 
# 使用字典类型进行构造时,以字典中的键名作为集合的键名
# alphabet的输出为{'e', 'c', 'b', 'a', 'g', 'd', 'f'}
 
 
# 5.通过集合类型来构造集合
alphabet = set({'e', 'c', 'b', 'a', 'g', 'd', 'f'})
# alphabet的输出为{'e', 'c', 'b', 'a', 'g', 'd', 'f'}

可迭代对象中的元素必须是不可变的数据类型,否则会抛出类型错误的异常信息:

>>> stars = ["陈法蓉", "陈德容", ["陈法蓉", "陈德容"]]

>>> stars = set(stars)

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

TypeError: unhashable type: 'list'

简单数据类型,字符串,元组都是不可变的数据类型,列表,字典,集合等是可变的数据类型。

(2) 直接定义法

直接定义法是指直接通过集合的别名符号{}来进行定义。在{}中,键名以英文逗号进行分隔。

代码实例:

# __desc__ = 直接通过{}来构造集合
 
# 不能使用{}来构造一个空的集合,Python解释器会将其解析为字典类型
stars = {}
# stars是一个空的字典
 
# 构造一个有值的集合
stars = {"陈法蓉", "陈德蓉"}

13.1.4 在循环中遍历集合

集合是一种可迭代对象,可以在for循环中遍历集合的键名。

遍历集合的for循环结构:

for name in set:
  pass

代码实例:

# __desc__ = 在for循环中遍历集合的键名
 
# 构造一个有值的集合
stars = {"陈法蓉", "陈德蓉"}
 
for star in stars:
  print(star)

13.1.5 集合的元素输出顺序

Python3.6以前,字典中的键的输出顺序是无序的,在3.6以后,键的输出顺序与元素的插入顺序一致。但集合的键的输出顺序仍是无序的。

代码实例:

# __desc__ = 集合的键的输出顺序是无序的
 
alphabet = set("abcdefg")
# alphabet的输出可能为{'e', 'c', 'b', 'a', 'g', 'd', 'f'}
# 从输出顺序可以看出,与元素本来的排列顺序并不一致

Python中的集合同样是基于哈希表进行实现,键的输出顺序取决于底层的数据结构。

13.1.6 知识要点

(1)Python中的集合类型是用{}符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。

(2)集合中的元素,相当于字典中的键名,元素类型必须是静态的数据类型。

(3)集合的类型名是set,可通过对象定义法和直接定义法来定义字典

(4)集合也是一种可迭代对象,可以在for循环中直接遍历出集合的键名

 

13.1.7 系统学习python

 薯条老师简介:资深技术专家,技术作家,著有《Python零基础入门指南》,《Java零基础入门指南》等技术教程。薯条老师的博客:http://www.chipscoco.com, 系统学习后端,爬虫,数据分析,机器学习、量化投资。

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

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

相关文章

Zemax Lumerical | 二维光栅出瞳扩展系统优化(下)

简介 本文提出并演示了一种以二维光栅耦出的光瞳扩展&#xff08;EPE&#xff09;系统优化和公差分析的仿真方法。 在这个工作流程中&#xff0c;我们将使用3个软件进行不同的工作 &#xff0c;以实现优化系统的大目标。首先&#xff0c;我们使用 Lumerical 构建光栅模型并使用…

封装设计!抽象BasePage,提升WEB自动化测试用例质量和效率

目录 前言&#xff1a; 一、什么是抽象BasePage 二、BasePage中的属性和方法 三、BasePage中的代码实现 四、抽象Page对象 五、测试用例 六、总结 前言&#xff1a; 对于测试工程师来说&#xff0c;WEB自动化测试是非常重要的一部分。然而&#xff0c;WEB自动化测试的开…

软件测试实用案例上机报告一

文章目录 一、上机内容&#xff08;单元测试&#xff09;二、简单计算机测试1、题目2、编码&#xff08;源代码&#xff09;3、HTMLTestRunner生成可视化报告4、coverage查看覆盖情况 三、基本覆盖路径法测试1、题目2、编码&#xff08;源代码&#xff09;3、复读 &#x1f414…

【构造+数论+Tree】CF1627C

Problem - 1627C - Codeforces 题意&#xff1a; 给定一棵树的形态&#xff0c;让你给这棵树的边赋值&#xff0c;使得每对相邻的边的边权和都是质数 思路&#xff1a; 一开始模拟了一下样例&#xff0c;Sample3告诉我们如果有三条边相邻就是无解&#xff08;可以猜的结论&a…

详解.NET IL代码

IL是什么&#xff1f; Intermediate Language &#xff08;IL&#xff09;微软中间语言 C#代码编译过程&#xff1f; C#源代码通过LC转为IL代码&#xff0c;IL主要包含一些元数据和中间语言指令&#xff1b; JIT编译器把IL代码转为机器识别的机器代码。如下图 语言编译器&am…

让代码创造童话,共建快乐世界

六一儿童节即将到来&#xff0c;小朋友们开心的笑容弥漫了整个城市。对于大多数孩子来说&#xff0c;六一儿童节意味着玩具和糖果。但尽管这些看起来微不足道&#xff0c;却是他们幼小而纯真心灵的欢笑。而心怀童真的大人们则用他们手中的代码&#xff0c;创造出一个快乐而幸福…

CI858K01 3BSE018135R1 简化数据的编译

CI858K01 3BSE018135R1系列由以下部分组成: em4远程:完全连接到安全基础设施em4警报:能够发送短信或电子邮件警报em4本地:为不需要远程通信或只需要局域网的应用而设计 CI858K01 3BSE018135R1 remote的主要优势是可以连接到互联网&#xff0c;从而提供编程、监控和数据记录功…

怎么把图片转换成pdf格式?

怎么把图片转换成pdf格式&#xff1f;PDF 文件是一种非常流行的文件格式&#xff0c;几乎所有的电脑都自带了 PDF 阅读器工具。将图片转换成 PDF 格式后&#xff0c;在任何电脑或移动设备上&#xff0c;都能轻易地查看、共享和传输&#xff0c;兼容性更好。PDF 文件可以加密保护…

Zotero之多篇文献引用

前提 需看下我的这篇&#xff1a;Zotero文献在word中的引用 具体操作 Step01 在Word中引用多篇文献 点击“Add/Edit Citation”在跳出的Zotero搜索框中&#xff0c;选择“经典视图”在跳出的“添加/编辑引注”界面中&#xff0c;点击“多重来源”&#xff08;单一来源&…

MFC (四) 处理文本

默认消息的处理方法 1.确认什么消息 2.添加消息处理函数 3.添加代码 默认消息指在消息定义中已存在的消息 这里我们对文本做换行处理 1.我们在ondraw里修改代码&#xff0c;这样&#xff0c;无论放大&#xff0c;缩小&#xff0c;都不会改变文本 void CMFCpaintView::On…

基于博客系统的测试

目录 1.测试用例 2.编写代码 2.1InitAndEnd 2.2BlogCases 编写测试用例 2.2.1.登录 2.2.2博客列表页 2.2.3写博客 2.2.4博客详情页校验 2.2.5写博客后,校验博客列表页 2.2.6删除刚才测试发布的博客 2.2.7注销 1.测试用例 2.编写代码 创建两个类 2.1InitAndEnd 用于…

【矩池云】YOLOv3~YOLOv5训练红外小目标数据集

一、数据集准备 数据集下载地址&#xff1a;https://github.com/YimianDai/sirst 1. 需要将数据集转换为YOLO所需要的txt格式 参考链接&#xff1a;https://github.com/pprp/voc2007_for_yolo_torch 1.1 检测图片及其xml文件 import os, shutildef checkPngXml(dir1, dir2…

OceanBase并行执行中 DTL消息接收处理的逻辑

OceanBase 并行执行的消息处理框架是很有意思的&#xff0c;里面用到了不少面向对象编程思想&#xff0c;值得分析。 DTL 从宏观上看可以分为三大部分&#xff1a; DTL 消息发送DTL 消息缓存DTL 消息处理 本文介绍 DTL 消息处理。 核心组件 DTL 消息缓冲区 DTL 消息缓冲区…

不懂这10个命令,别说你会调试网络设备

我的网工朋友大家好啊 好久没跟你们聊思科设备了。 虽然目前大方向上&#xff0c;企业用的设备越来越偏向国产化&#xff0c;学习华为、华三等厂商知识的人也越来越多。 但不可否认的是&#xff0c;思科仍然是厂商老大哥。 交换机、路由器这两块&#xff0c;思科占的全球市场…

若依框架请求magic-api接口出现Uncaught (in promise) error Promise.then (async)

错误描述&#xff1a; 在若依前端向magic-api发请求&#xff0c;实际上收到了返回的数据&#xff0c;但是仍出现错误提示。 错误截图&#xff1a; 猜测的原因&#xff1a; 请求参数错误返回参数错误magic-api内部语法错误 排除原因 在magic-api中仅返回一个数&#xff0c;同…

ChatGPT浪潮席卷,维智科技以时空AI赋能数实融合的未来城市

作者 | 伍杏玲 出品 | CSDN 每个时代都有新的技术浪潮&#xff0c;但在短短两年时间里见证两项颠覆全球的技术发展&#xff0c;实在出人意料之外&#xff1a;2021年以来&#xff0c;元宇宙成为互联网产业新风口&#xff0c;今年ChatGPT成为IT圈“顶流”&#xff0c;这两者为地…

Java访问QingCloud青云QingStor对象存储(公有云、私有云)

一、参考API 官网SDK文档参考&#xff1a;Java SDK - 公有云文档中心 (qingcloud.com) 二、环境说明 公有云跟私有云区别&#xff1a; 使用公有云QingStor&#xff0c;直接按照官网sdk直接可对接&#xff0c;私有云QingStor的话&#xff0c;需要设置具体的私有云请求地址及z…

chatgpt赋能python:Python中构造函数的名称

Python中构造函数的名称 作为一名有10年Python编程经验的工程师&#xff0c;我深知Python语言中构造函数的重要性。在本文中&#xff0c;我将着重介绍Python中构造函数的名称&#xff0c;并阐述其在Python编程中的作用。 什么是构造函数&#xff1f; 构造函数是一种特殊类型…

【C#学习记录】添加控件后工具箱不显示是什么原因

大家好&#xff0c;我是雷工&#xff01; 今天在一个Winform程序中用到将WindowsMediaPlayer控件添加到工具箱&#xff0c;但添加了好几次&#xff0c;工具箱内均无法显示&#xff0c;经翻找资料和验证确认是跟创建项目时选择的模板有关&#xff0c;为了遇到同样问题的小伙伴能…

荣获用友年度十佳产业融合生态伙伴称号 | 图扑软件

2023 年 4 月 20 日&#xff0c;由中华全国工商业联合会联合工业和信息化部、国务院国资委组织开展的 2023 年度“百场万企”大中小企业融通对接活动——智能制造 MES 产业融通对接会暨 2023 用友 BIP 技术大会 MES 生态创新专题论坛在用友产业园顺利召开。 用友年度生态合作伙…