- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 数据表示和计算
1
3.4.3 集合和字典
1. 集合
2.字典
2
1. 集合
集合的特点
集合是无序的,不能通过数字进行索引。
集合的元素不能重复出现
集合的应用
去除列表中的重复元素
求两个列表的相同元素(交集)
求两个列表的不同元素(差集)
3
(1)创建集合
Python的集合可分为可变集合(set)和不可变集合(frozenset)
对可变集合( 可以添加和删除元素,
对不可变集合 则不允许添加和删除元素这样
使用{}创建的是可变集合set,{}中用逗号分隔的数据项作为集合的一个元素。
通过类型构造器set()和frozenset()创建不同类型的集合。
4
【例3-4-16】集合的字面表示示例
s1={2,4,6,8,10}
type(s1)
class set
s1
{8, 10, 4, 2, 6}
s2={hello}
s2
{hello}
5
【例3-4-17】集合的类型构造器示例
set函数的参数是容器对象,可以是字符串,列表和元组,它可以将序列的数据元素作为集合set的元素。
s3=set(hello)
s3
{l, e, o, h}
同样还可以根据列表对象元组来创建集合
s5=set((he,hello,her,here))
s5
{here, hello, he, her}
6
【例3-4-18】列表去重复操作示例
通过set函数建立列表的去重复集合元素,再通过list方法根据集合创建列表:
L1 = [1,2,3,4,1,2,3,4]
s4=set(L1)
s4
{1, 2, 3, 4}
L2=list(s4)
L2
[1, 2, 3, 4]
L2是去重复后的列表,上面的过程也可简单地写为:
L2=list(set(L1))
print L2
[1, 2, 3, 4]
set是可以改变的集合类型,如果创建后的集合不需改变集合元素,可创建不可变集合。
7
【例3-4-19】创建一个星期的英文缩写的不可变集合。
s6=frozenset((MON,TUE,WED,THU,FRI,SAT,SUN))
s6
frozenset({SUN, WED, TUE, SAT, FRI, MON, THU})
8
(2)访问集合
由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。
9
【例3-4-20】集合访问示例
SUN in s6
True
SON in s6
False
for i in s6:
print(i,end= )
SUN WED TUE SAT FRI MON THU
10
(3)集合运算
11
运算
描述
运算
描述
x in 集合
检测x是否在集合中
s1==s2
判断集合是否相等
s1|s2
并集
s1=s2
判断s1是否是s2的子集
s1s2
交集
s1s2
判断s1是否是s2的真子集
s1-s2
差集
s1=s2
判断s1是否是s2的超集
s1^s2
对称差
s1s2
判断s1是否是s2的真超集
s1|=s2
将s2的元素并入s1
【例3-4-21】集合运算示例
对前面已建立的集合s2,s5作以下操作:
s2
{hello}
s5
{here, hello, he, her}
s2=s5
True
s5s2
True
s2s5
{hello}
s5-s2
{her, he, here}
s2|s5
{her, hello, he, here}
12
【例3-4-21】集合运算示例(续)
判断两个集合是否相等,只需判断其中包含的集合元素是否一致,与顺序无关,下面的例子又说明了集合是无序的。
s7={he,hello, her,here}
s7
{her, hello, he, here}
s5
{here, hello, he, her}
s5==s7
True
13
(4)集合对象的方法
打星号*的方法是set集合独有的方法,不打星号的方法是两种集合都有的方法
14
方法
描述
s1.union(s2 )
s1|s2
s1.difference(s2)
s1-s2
s1.intersection(s2)
s1s2
s1.issubset(s2)
s1=s2
s1.issuperset(s2)
s1=s2
*
s1.update(s2)
将将s2的元素并入s1
*
s1.add (x)
增加元素x
*
s1.remove(x)
移除x,x不存在报错
*
s1.discard(x)
移除x,x不存在不报错
*
s1.pop ()
从s中删除并返回任意一个元素
*
s1.clear ()
清空s
s1.copy
您可能关注的文档
- 2_外平面图L_2_1_标号数.pdf
- 堆结构和其应用.ppt
- 堆排序和算法分析.doc
- 2-1线性方程组求解.ppt
- 2-3 分块矩阵和其运算.ppt
- 2-4 线性方程组行列式解法-克莱姆法则.ppt
- 堆石料的剪胀特性及广义塑性本构模型.pdf
- 2-4章补充练习和解答.docx
- 堆物理第一篇.ppt
- 对Treynor_Black投资组合模型推广_廖理.pdf
- 人教版(2019)必修 第二册Unit 2 Wildlife Protection习题(含答案).docx
- 《基于J2EE的医院预约挂号管理系统的设计与实现》14000字.docx
- 《基于Javaweb的网上考试系统设计与实现》9500字.doc
- 《基于MATLAB的10kV小电流接地系统中单相接地故障仿真研究》6500字.docx
- 《基于JSP技术的垃圾分类回收小程序设计与实现》10000字.docx
- 《基于Java的网上订餐系统的实现》10000字.docx
- 《基于Python的社区图书共享平台的设计与实现》16000字.docx
- 《车站联锁设计案例综述》2900字.docx
- 《车牌识别系统的设计与实现》5700字.docx
- 《车站信号平面布置图案例综述》3400字.docx
文档评论(0)