04 Python数据类型之元组、集合
发布日期:2021-06-29 15:44:21 浏览次数:2 分类:技术文章

本文共 3941 字,大约阅读时间需要 13 分钟。

元组(Tuple)是任意对象的有序集合

元组与字符串和列表类似,是一个位置有序的对象的集合(也就是其内容维持从左到右的顺序)。与列表相同,可以嵌入到任何类别的对象中。

通过偏移存取 通过偏移而不是键来访问,例如可以使用索引,切片

属于不可变序列类型 不能在原处修改(因为他们是不可变的),但可以进行组合和复制,运算后会生成一个新的元素

创建空元祖

tup1 = ()

元组中只包含一个元素时,需要在元素后面添加逗号

tup1 = (50,)tup1
(50,)

元组与字符串类似,下标索引从0开始,可以进行截取,组合等。元组可以使用下标索引来访问元组中的值,如下实例:

tup1 = ("physics","chemistry",1997,2000)tup2 = (1,2,3,4,5,6,7)print("tup1[0]:",tup1[0])print("tup1[1:5]:",tup2[1:5])
tup1[0]: physicstup1[1:5]: (2, 3, 4, 5)

修改元组

元组与列表不同,元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下:

tup1 = (12,34.56)tup2 = ("abc","xyz")# 以下修改元组元素操作时非法的,会出现TypeError错误tup1[0] = 100
---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)
in
3 4 # 以下修改元组元素操作时非法的,会出现TypeError错误----> 5 tup1[0] = 100TypeError: 'tuple' object does not support item assignment
# 创建一个新的元组tup3 = tup1 + tup2print(tup3)
(12, 34.56, 'abc', 'xyz')

删除元组

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,实例中元组被删除后,输出变量会有异常信息,如下:

tup = ("physics","chemistry",1997,2000)print(tup)
('physics', 'chemistry', 1997, 2000)
del tup# 元组已被删除,输出变量提示异常信息print(tup)
---------------------------------------------------------------------------NameError                                 Traceback (most recent call last)
in
----> 1 del tup 2 3 # 元组已被删除,输出变量提示异常信息 4 print(tup)NameError: name 'tup' is not defined

任意无符号的对象,以逗号隔开,默认为元组。如下:

print("abc",-4.24e93,18+6.6j,"xyz")x,y=1,2print("Value of x,y:",x,y)
abc -4.24e+93 (18+6.6j) xyzValue of x,y: 1 2

Python的元组数据类型包含更多的方法

tup.index(x,[start,[stop]]) 返回元组中start熬stop索引中第一个值为x的元素在整个列表中索引。如果没有匹配的元素就会返回一个错误

tup.count(x) 返回x在元组中出现的次数

cmp(tuple1,tuple2) 比较元组中两个元素

len(tuple) 计算元组中元素格式

max(tuple) 返回元组中元素最大值

min(tuple) 返回元组中元素最小值

tuple(seq) 将列表转换为元组

元组不提供字符串、列表和字典中的方法。如果相对元组排序,通常先得奖它转换为列表并使其成为一个可变对象,才能获得使用排序方法,或使用sorted内置方法

T = ("c","a","d","e")tmp = list(T)tmp.sort()print(tmp)print(tuple(tmp))
['a', 'c', 'd', 'e']('a', 'c', 'd', 'e')
T = ("c","a","d","e")# 按字母顺序排序sorted(T)
['a', 'c', 'd', 'e']

列表解析也可用于元组的转换

T = (1,2,3,4,5)L = [x+20 for x in T]L
[21, 22, 23, 24, 25]
T = (1,2,3,2,3,5,2)print(T.index(2))print(T.index(5,2,7))print(T.count(2))
153

集合

Python还包含一种数据类型set(集合)。集合是一个无序不重复元素的集。基本功能包括关系运算和消除重复元素。比如支持union(联合),interseion(交),difference(差)和sysmmetric difference(对称差集)等数学关系运算

大括号或set()函数可以用来创建集合。注:创建空集合,必须使用set()而不是{},后者用于创建空字典

所有集合方法

S.issubset(t) 如果s是t的子集,则返回True,否则返回False

S.issuperset(t) 如果s是t的超集,则返回True,否则返回False

S.unoin(t) 返回一个新集合,该集合是s和t的并集,也可用s1|s2,但不能用s1+s2

S.intersection(t) 返回一个新集合,该集合是s和t的交集,也可用s1&s2

S.difference(t) 返回一个新集合,该集合是s的成员,但不是t的成员,也不用s1-s2

S.symmetric_difference(t) 对称差分是集合的异或,返回一个新集合,该集合是s或t的成员,但不是s和t共用的成员,也可用s1^s2

S.copy() 返回一个新集合,该集合是s的复制

仅适合可变集合

S.update(t) 用t中的元素修改s,,即s现在包括s或t的城固uaun

S.intersection_update() s中的成员是共同属于s和t的元素

S.difference_update s中的成员是属于s但不包含在t中的元素

S.symmetric_difference_update s中的成员更新为那些包含在s或t中,但不是s和t共用的元素

S.add(obj) 在集合s中添加对象obj

S.remove(obj) 从集合s中删除对象obj,如果obj不是集合s中的元素将有错误

S.discard(obj) 如果obj是集合s中的元素,从集合s中删除对象obj

S.pop() 删除集合s中的任意一个对象,并返回它

S.clear() 删除集合s中的所有元素

basket = ["apple","orange","apple","pear","orange","banana"]fruit = set(basket)print(fruit)print("orange" in fruit)print("crabgrass" in fruit)
{'apple', 'pear', 'orange', 'banana'}TrueFalse
a = set("abracadabra")b = set('alacazam')# 唯一值print('a:\t',a)          # 在a不在b里面print('a - b:\t',a - b)# 在a或b里print('a | b:\t',a | b)# a、b里面都有print('a & b:\t',a & b)  # 在a或b里但是不同时在两个里面print('a>b,a
b,a
a:	 {'r', 'b', 'd', 'a', 'c'}a - b:	 {'r', 'd', 'b'}a | b:	 {'m', 'r', 'l', 'b', 'z', 'd', 'a', 'c'}a & b:	 {'a', 'c'}a>b,a

列表和字典不能嵌入到集合中,但是元组是可以嵌入的

S = set()S.add([1,2,3])
---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)
in
1 S = set()----> 2 S.add([1,2,3])TypeError: unhashable type: 'list'
S.add((1,2,3))S
{(1, 2, 3)}
type(S)
set

转载地址:https://codingchaozhang.blog.csdn.net/article/details/89349133 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:05 Python之条件与循环
下一篇:03 Python数据类型之字典

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月10日 10时47分59秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

领导让我整理上个季度的销售额,幸好我会Python数据分析,你猜我几点下班 2019-04-29
【Python爬虫实战】为何如此痴迷Python?还不是因为爱看小姐姐图 2019-04-29
零基础自学Python,你也可以实现经济独立! 2019-04-29
ElasticSearch与Mysql对比(ElasticSearch常用方法大全,持续更新) 2019-04-29
数字化转型的主干道上,华为云以“三大关键”成企业智能化推手 2019-04-29
数字化为何不走“捷”“径”? 2019-04-29
和总裁、专家交朋友,华为云助推政企智能化升级又做到前面去了 2019-04-29
BCOP章鱼船长,6月22日晚上8点上线薄饼 2019-04-29
为战疫助力,半导体功不可没 2019-04-29
了解这些操作,Python中99%的文件操作都将变得游刃有余! 2019-04-29
知道如何操作还不够!深入了解4大热门机器学习算法 2019-04-29
只有经历过,才能深刻理解的9个编程道理 2019-04-29
发现超能力:这些数据科学技能助你更高效专业 2019-04-29
AI当道,人工智能将如何改变金融业? 2019-04-29
消除性别成见,技术领域需要更多“乘风破浪的姐姐” 2019-04-29
7行代码击败整个金融业,这对20多岁的爱尔兰兄弟是如何做到的? 2019-04-29
2020十大编程博客:私藏的宝藏编程语言博客大放送! 2019-04-29
编程中的角色选择:哪类工作角色最适合你? 2019-04-29
10种算法一文打尽!基本图表算法的视觉化阐释 2019-04-29
未来属于人工智能工程师,但成功转型不容易 2019-04-29