热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第八章元组与集合

目录​一、元组二、集合三、集合的数学操作四、集合的相关操作五、集合间的关系六、列表、元组、集合、字典区别一、元组元组是python内置的数据结构之一,

目录

一、元组

二、集合

三、集合的数学操作

四、集合的相关操作

五、集合间的关系

六、列表、元组、集合、字典区别





一、元组

元组是python内置的数据结构之一,是一个不可变序列,元组是不允许修改元素

不可变序列:字符串,元组

特点:没有增删改的操作,因为对象的地址会发生改变

可变序列:列表,字典

特点:可以对序列执行增删改操作,对象的地址不发生更改

1、元组的创建方式

小括号形式

y = ('df',20,'wd')
print(y)

使用内置函数tuple( )

t = tuple(('wed',50))
print(t)

:有多个元素时,创建元组的小括号可以省略

a = 'dwd',20,'wdw'
print(a)

如果元组只包含一个元素则需要使用逗号和小括号,如果不加变量会认为是数据本身的类型

u = ('wdw',)
print(u)

2、空元组的创建

空列表、空字典、空元组的区别

#空列表
a = []
a = list()#空字典
a = {}
a = dict()#空元组
a = ()
a = tuple()

注:元组不允许对数据进行修改但是可以查看,但如果元素存在列表或字典,则可以对列表或字典进行修改。

t = (10,[1,2,3],50)
print(id(t))
print(t[0],type(t[0]))
print(t[1],type(t[1]))
print(t[2],type(t[2]))
t[1].append(200) #200被加入了元组中的列表里
print(t,id(t))

10

[1, 2, 3]

50

(10, [1, 2, 3, 200], 50)


3、元组的遍历

通过索引获取元素

t2 = ('dd',50,90)
print(t2[0])
print(t2[1])
print(t2[2])

#遍历元组
for i in t2:print(i)

二、集合

集合是python中的内置数据结构之一,与列表字典一样都属于可变类型的序列。

集合相当于没有value值的字典,他也是通过hash()函数计算存储位置,集合中的元素都是无序的,集合的元素是不允许重复的。

1、集合的创建方式

① 直接使用花括号{ }

s = {2,3,3,4,5,6} #不能有重复元素,会自动删除重复的元素
print(s,type(s))

② 使用内置函数set( )

s1 = set(range(6))
print(s1)

③ 将其他数据类型元素放入集合中

#将列表放入集合
s2 = set([1,2,3,6,6,7])
print(s2)
#字符串放入集合
s3 = set('dgjkak')
print(s3)
#字典放入集合
s4 = set({1,2,3,4,69})
print(s4)
#将元组放入集合中
s5 = set((1,2,3,4,69))
print(s5)

④ 定义一个空集合

s6 = {}
#直接花括号是空字典,不是空集合,只能使用内置函数set
s7 = set()

2、集合生成式

集合生成式与列表生成式相同,只是将列表生成式中的中括号换成花括号

#列表生成式
lst = [i*i for i in range(10)]
print(lst)#集合生成式,将列表生成式中括号换成花括号
lst = {i*i for i in range(10)}
print(lst)

三、集合的数学操作

1、交集运算,使用交集函数intersection,或者交集运算符&

s1 = {10,20,30,40}
s2 = {20,30,40,50,60}
#调用交集intersection函数
print(s1.intersection(s2))
#使用&运算
print(s1 & s2)

2、并集操作,使用并集函数union,或者使用并集运算符 |

#调用union函数
print(s1.union(s2))
#使用|运算
print(s1 | s2)

3、差集操作,使用差集函数difference,或者使用差集运算符 -

#使用差集函数difference
print(s1.difference(s2))
#使用-操作
print(s1-s2)

4、对称差集,使用对称差集函数symmetric_difference,或者使用差集运算符 ^

#使用对称差集函数symmetric_difference
print(s1.symmetric_difference(s2))
#使用^操作
print(s1^s2)

四、集合的相关操作

1、集合元素的判断操作

#in 或not in
s = {10,20,30,40}
print(100 in s)

2、集合元素的添加操作

调用add( )函数一次添加一个元素

#add()一次添加一个元素
s.add(60)
print(s)

调用update( )函数至少添加一个元素

s.update({200,300,60})
print(s)
s.update([80,88])
s.update((47,56))
print(s)

 {40, 200, 10, 300, 47, 80, 20, 88, 56, 60, 30}


注: 用update函数向集合中添加元素时不能直接添加元素update(40,50,20),而是需要放在列表或者字典中添加update({40,50,20})。

3、集合元素的删除操作

调用remove()函数,一次删除一个指定的元素,当指定元素不存在时会报错

s.remove(20)
print(s)

调用discard()函数,一次删除一个指定元素,当指定元素不存在时不抛异常

s.discard(30)
print(s)

调用pop()函数,一次删除一个任意元素,随机删除,集合中没有参数不能指定元素

s.pop()
print(s)

④ 调用clear()方法清空集合

s.clear()
print(s)

五、集合间的关系

1、集合是否相等

s1 = {10,20,50,30,50}
s2 = {11,22,33,44,45}
print(s1 != s2)

True


2、一个集合是否是另一个集合的子集,通过issubset()函数判断

#通过issubset()函数判断
s3 = {1,2,3,4,5,6}
s4 = {1,2,3}
s5 = {1,5,9,8}
print(s4.issubset(s3))
print(s5.issubset(s3))

3、一个集合是否是另一个集合的超集(父集)

print(s3.issuperset(s4))

4、判断两个集合之间没有交集

print(s4.isdisjoint(s5)) #没有交集为T,有交集为F

六、列表、元组、集合、字典区别


推荐阅读
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • 高级缩放示例.就像谷歌地图一样.它仅缩放图块,但不缩放整个图像.因此,缩放的瓷砖占据了恒定的记忆,并且不会为大型缩放图像调整大小的图像.对于简化的缩放示例lookhere.在Win ... [详细]
  • 本文探讨了在处理大型字典时,如何通过优化字典理解和列表操作来提高代码执行效率。具体问题涉及从字典中筛选出特定条件下的条目。 ... [详细]
  • 根据官方定义,RxJava是一种用于异步编程和可观察数据流的API。其核心特性在于流式处理能力和丰富的操作符支持。 ... [详细]
  • 在Effective Java第三版中,建议在方法返回类型中优先考虑使用Collection而非Stream,以提高代码的灵活性和兼容性。 ... [详细]
  • 本文详细介绍了HashSet类,它是Set接口的一个实现,底层使用哈希表(实际上是HashMap实例)。HashSet不保证元素的迭代顺序,并且是非线程安全的。 ... [详细]
  • pypy 真的能让 Python 比 C 还快么?
    作者:肖恩顿来源:游戏不存在最近“pypy为什么能让python比c还快”刷屏了,原文讲的内容偏理论,干货比较少。我们可以再深入一点点,了解pypy的真相。正式开始之前,多唠叨两句 ... [详细]
  • 本文介绍了多维缩放(MDS)技术,这是一种将高维数据映射到低维空间的方法,通过保持原始数据间的关系,以便于可视化和分析。文章详细描述了MDS的原理和实现过程,并提供了Python代码示例。 ... [详细]
  • 图像处理学习笔记:噪声分析与去除策略
    本文详细探讨了不同类型的图像噪声及其对应的降噪技术,旨在帮助读者理解各种噪声的本质,并掌握有效的降噪方法。文章不仅介绍了高斯噪声、瑞利噪声、伽马噪声、指数噪声、均匀噪声和椒盐噪声等常见噪声类型,还特别讨论了周期噪声的特性及处理技巧。 ... [详细]
  • AI炼金术:KNN分类器的构建与应用
    本文介绍了如何使用Python及其相关库(如NumPy、scikit-learn和matplotlib)构建KNN分类器模型。通过详细的数据准备、模型训练及新样本预测的过程,展示KNN算法的实际操作步骤。 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • linux网络子系统分析(二)—— 协议栈分层框架的建立
    目录一、综述二、INET的初始化2.1INET接口注册2.2抽象实体的建立2.3代码细节分析2.3.1socket参数三、其他协议3.1PF_PACKET3.2P ... [详细]
  • 本文详细介绍了Java中HashSet的工作原理及其源码分析。HashSet实现了Set接口,内部通过HashMap来存储数据,不保证元素的迭代顺序,且允许null值的存在。文章不仅涵盖了HashSet的基本概念,还深入探讨了其内部实现细节。 ... [详细]
  • Spring Boot使用AJAX从数据库读取数据异步刷新前端表格
      近期项目需要是实现一个通过筛选选取所需数据刷新表格的功能,因为表格只占页面的一小部分,不希望整个也页面都随之刷新,所以首先想到了使用AJAX来实现。  以下介绍解决方法(请忽视 ... [详细]
author-avatar
aska
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有