元组
元组和列表最大的区别就是:
① 列表可以修改元素,添加和删除元素 ② 元组是不可改变的,不可直接修改
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
>>>