1.创建一个元组:
①与创建列表不同,创建元组用的是‘()’,创建一个空元组直接用一对小括号表示
②元组的标志性符号是‘逗号’,创建的元组中只有一个元素时,要在元素后面加一个‘逗号’
>>> #创建元组
>>> tuple1=(1,2,3,4,5)
>>> tuple1
(1, 2, 3, 4, 5)
>>> #创建空元组
>>> tuple2=()
>>> tuple2
()
>>> #创建只有一个元素的元组
>>> tuple3=(1)
>>> tuple3
1
>>> tuple4=(1,)
>>> tuple4
(1,)
>>> tuple5=1,
>>> tuple5
(1,)
>>> type(tuple3);type(tuple4)
<class 'int'>
<class 'tuple'>
>>> #逗号对与元组的重要性
>>> tuple1=1,2,3,4,5,6
>>> tuple1
(1, 2, 3, 4, 5, 6)
>>> 8*(8)
64
>>> 8*(8,) # *在此充当重复操作符
(8, 8, 8, 8, 8, 8, 8, 8)
2.访问元组中的元素
>>> tuple1=(11,12,13,14,15,16)
>>> #访问元组中的某个元素(编号从0开始)
>>> tuple1[2]
13
>>> #访问元组中的部分连续元素
>>> tuple1[2:]
(13, 14, 15, 16)
>>> tuple1[:5]
(11, 12, 13, 14, 15)
>>> tuple1[1:3] #访问编号范围[1,3)的元素
(12, 13)
3.更新一个元组
①元组中的元素不允许被直接修改
②要想修改元组可以使用拼接的方式
>>> #元组中的元素不允许被直接修改
>>> tuple1=(1,2,3,4,5,6,7)
>>> tuple[2]=8
Traceback (most recent call last):
File "<pyshell#46>", line 1, in <module>
tuple[2]=8
TypeError: 'type' object does not support item assignment
>>> #在元组中插入元素
>>> tuple1[:3]
(1, 2, 3)
>>> tuple1[3:]
(4, 5, 6, 7)
>>> tuple1=tuple1[:3]+('Swan',)+tuple1[3:] #使用拼接的方法插入元素
>>> tuple1
(1, 2, 3, 'Swan', 4, 5, 6, 7)
4.删除元组中的元素和删除元组
①由于元组中的元素是不允许被直接修改的,所以删除元组中的元素可以使用拼接的方法
②删除整个元组
>>> #删除部分元素
>>> tuple1=(0,1,2,3,4,5,6)
>>> tuple1=tuple1[:2]+tuple1[3:]
>>> tuple1
(0, 1, 3, 4, 5, 6)
>>> #删除元组
>>> del tuple1
>>> tuple1
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
tuple1
NameError: name 'tuple1' is not defined
5.与元组相关的操作符:
拼接:+,‘+’号两端的类型必须一致
重复操作符:*;
关系操作符:>,>=,<,<=,==
逻辑操作符:and , or
成员操作符:in,not in
- 拓展:
1.列表和元组的不同:
列表:是一个大仓库,可以随时往里面添加和删除任何类型的元素。当我们需要频繁的修改数据时,需要使用列表。
元组:是一个封闭的列表,一旦定义,不可改变(不能添加、删除和修改)。当我们希望内容不能被轻易改写时,我们使用元组。
一般情况下多使用列表,只有特殊情况才选择使用元组。
2. x, y, z = 1, 2, 3 请问x, y, z是元组吗?
>>> x,y,z=1,2,3
>>> type(x);type(y);type(z)
<class 'int'>
<class 'int'>
<class 'int'>
>>> h=x,y,z
>>> type(h)
<class 'tuple'>
3.列表中有列表推导,那么元组中有元组推导吗?
>>> list1=[x**2 for x in range(10)]
>>> list1
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> type(list1)
<class 'list'>
>>> tuple1=(x**2 for x in range(10))
>>> tuple1
<generator object <genexpr> at 0x000001ABBC6F8318>
>>> type(tuple1)
<class 'generator'>
python3是没有“元组推导”的,但是>>> tuple1=(x**2 for x in range(10)) 没有出错,是因为误打误撞得到了一个生成器:
>>> 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
>>> tuple1.__next__()
81