元组tuple
列表属于可变序列,可以任意修改列表中的元素。元组属于不可变序列,不能修改元组中的元素。因此,元组没有增加元素、修改元素、删除元素相关方法
元组支持如下操作:
1、索引访问
2、切片操作
3、连接操作
4、成员关系操作
5、比较运算操作
6、计数:元组长度len()、最大值max()、最小值min()、求和sum()等
元组的创建
1、通过()创建元组,小括号可以省略
**如果元组只有一个元素,则必须后面加逗号。**这是因为解释器会把(1)解释为整数1,(1,)解释为元组
a=(1,2,3)
a=1,2,3
2、通过tuple()创建元组
tuple(可迭代的对象)
>>>b=tuple()#创建一个空元组对象
>>>b
()
>>>a=tuple("abc")
>>>a
('a','b','c')
>>>c=tuple(range(3))
>>>c
(1,2,3)
>>>d=tuple([2,3,4])
>>>d
(2,3,4)
总结:
tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组
list()可以接收元组、字符串、其他序列类型、迭代器等生成列表
删除元组
>>>tuple(1,2,3)
>>>del b
元组的元素访问和计数
1、元组的元素不能修改
>>>a=(2,1,3,9,8)
>>>a[3]=2
Traceback(most recent call last):
File"<pyshell#313>",line 1,in<module>
a[3]=2
TypeError:'tuple'object does not support item assignment
2、元组的元素访问和列表一样,只不过防护的仍然是元租对象
>>>a=(20,10,30,9,8)
>>>a[1]
10
>>>a[1:3]
(10,30)
>>>a[:4]
(20,10,30,9)
3、列表关于排序的方法list.sort()是修改原列表对象,元组没有该方法。如果要对元组排序,只能使用内置函数sorted(tupleObj),并生成新的列表对象
>>>a=(1,2,4,3)
>>>sorted(a)
[1,2,3,4]
>>>b=20,34
>>>a+b
(1,2,3,4,20,34)
>>>len(a)
4
>>>sum(a)
10
>>>max(a)
4
>>>min(a)
1
zip
zip(列表1,列表2,……)将多个列表对应位置的元素组合成为元组,并返回这个元组对象
>>>a=[1,2,3]
>>.b=[4,5,6]
>>>c=zip(a,b)
>>>list(c)
[1,2,3,4,5,6]
生成器推导式创建元组
从形式上看,生成器推导式与列表推导式类似,只是生成器推导式使用小括号。列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是一个生成器对象
可以通过生成器对象,转化成列表或元组。也可以使用生成器对象_next_()方法进行遍历,或者直接作为迭代器对象来使用。不管什么方式使用,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象
>>>s=(x*2 for x in range(5))
>>>s
<generator object <genexpr> at 0x0000000002BDEB48>
>>>tuple(s)
(0,2,4,6,8)
>>>lsit(s)#只能访问一次元素,第二次就为空了。需要再生成一次
[]
>>>s=(x*2 for x in range(5))
>>>s._next_()
0
>>>s._next_()
2
元组总结
1、元组的核心特点是:不可变序列
2、元组的访问和处理速度比列表快
3、与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用
本文章为观看哔哩哔哩视频所记笔记:https://www.bilibili.com/video/BV1tU4y1t7rv
文章:https://blog.youkuaiyun.com/qq_44797965/article/details/104222006