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

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


推荐阅读
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文介绍如何使用 Python 编写程序,检查给定列表中的元素是否形成交替峰值模式。我们将探讨两种不同的方法来实现这一目标,并提供详细的代码示例。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文介绍了如何在Python中使用join()方法将列表中的元素连接成一个字符串。join()方法允许用户指定分隔符,从而灵活地生成所需格式的字符串。此外,我们还将探讨一些实际应用中的注意事项和技巧。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
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社区 版权所有