元组
元组和列表最大的区别就是:
① 列表可以修改元素,添加和删除元素 ② 元组是不可改变的,不可直接修改
1.创建元组
元组大部分时候用的是小括号
>>> tuple1 = (1,2,3,4,5,6,7,8,9) >>> tuple1 (1, 2, 3, 4, 5, 6, 7, 8, 9) >>>
2.访问元组
>>> tuple1[1] 2 >>> tuple1[5:] (6, 7, 8, 9) >>> tuple1[:5] (1, 2, 3, 4, 5) >>>
3.复制元组
利用分片的方法来复制一个元组
>>> tuple2 = tuple1[:] >>> tuple2 (1, 2, 3, 4, 5, 6, 7, 8, 9) >>>
注意,不可直接修改元组内的元素:
>>> tuple1[1] = 1 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
4.元组并不是都有小括号
有小括号的并不是元组
>>> temp = (1) >>> type(temp) <class 'int'> >>>
没小括号的也可能是元组
>>> temp = 1,2,3 >>> type(temp) <class 'tuple'> >>>
判断是否为元组类型,(,)才是关键,小括号只是起补充的作用
创建空元组,直接用小括号就行
>>> temp = () >>> type(temp) <class 'tuple'>
如果要创建的元组只有一个元素,请在后面加上一个逗号(,),这样才能证明它是个元组,而不是其他类型
>>> temp1 = (1) >>> type(temp1) <class 'int'> >>> temp2 = (2,) >>> type(temp2) <class 'tuple'> >>> temp3 = 1, >>> type(temp3) <class 'tuple'> >>>
再举个例子:
>>> 8 * (8) 64 >>> 8 * (8,) (8, 8, 8, 8, 8, 8, 8, 8)
5.更新和删除元组
间接修改元组内的元素:通过拷贝现有的字符串片段狗造成一个新的字符串的方式
>>> name = ('字母罗', '煤球', '内马尔') >>> name = name[:2] + ('国足',) + name[2:] >>> name ('字母罗', '煤球', '国足', '内马尔') >>>
同理,删除元组内的元素:
>>> name = name[:2] + name[3:] >>> name ('字母罗', '煤球', '内马尔') >>>
删除整个元组
>>> del name >>> name Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'name' is not defined
日常使用上,很少用del删除整个元组,因为python的回收机制会在元组不再被使用的时候自动删除
另外操作符也同样可以在元组使用
作业题:
1.描述一下元组和列表?
列表:大仓库,可以随意添加和删除
元组:封闭的列表,一旦定义,不可以改变
2.什么情况下需要使用元组而不是列表?希望内容不被轻易修改的时候,我们使用元组
需要频繁修改数据的时候,使用列表
3.x,y,z = 1,2,3 x,y,z是元组吗?
所有的多对象的、逗号分隔的、没有明确用符号定义的这些集合默认的类型都是元组
>>> x,y,z = 1,2,3 >>> h = x,y,z >>> type(h) <class 'tuple'> >>>
4.python3没有元组推导式,为什么'tuple1 = (x**2 for x in range(10))'没有报错?
>>> tuple1 = (x**2 for x in range(10)) >>> tuple1 <generator object <genexpr> at 0x00000237A3DC0E60> >>> tuple1.__next__() 0 >>> tuple1.__next__() 1 >>> tuple1.__next__() 4 >>> tuple1.__next__() 9 >>> tuple1.__next__() 16 >>> tuple1.__next__() 25 >>> tuple1.__next__() 36 >>> tuple1.__next__() 49 >>> tuple1.__next__() 64 >>>