热门标签 | 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

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


推荐阅读
  • 一.元祖类型 (tuple)1.什么是元祖?用途:用于存放多个值,当存放的多个值只有读的需求没有改变的需求时,用元祖最合适.定义方式:在()内用逗号分隔开的多个任意类型的值t(1, ... [详细]
  • 集合set集合是可变的容器集合内的数据对象都是唯一的(不能重复多次的)集合是无序的存储结构,集合中的数据没有先后关系集合内的元素必须是不可 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 从批量eml文件中提取附件的Python代码实现方法
    本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。 ... [详细]
  • 很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意 ... [详细]
  • 转载请注明原文地址:http:www.cnblogs.comygj0930p6409067.html1:HammingdistanceTheHammin ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 对于我当前的需求,我需要绘制一些我从mongodb中获取的数据的图表,并且我正在使用reactPo ... [详细]
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社区 版权所有