元组和列表是近亲关系,所以元组和列表在实际使用上是非常相似的。
>>> list1 = [1,2,3,4,5,6,7,8,9]
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8, 9]
我们主要从以下几个点来进行讨论学习:
- 创建一个元组
创建一个元组(大部分情况下用的是小括号)
>>> tuple1 = (1,2,3,4,5,6,7,8,9)
>>> tuple1
(1, 2, 3, 4, 5, 6, 7, 8, 9)
创建一个列表(大部分情况下用的是中括号)
>>> list1 = [1,2,3,4,5,6,7,8,9]
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8, 9]
- 访问元组和访问列表是一样的
>>> tuple1[1]
2
>>> tuple1[5:]
(6, 7, 8, 9)
>>> tuple1[:5]
(1, 2, 3, 4, 5)
- 元组的拷贝也是一样的
>>> tuple2 = tuple1[:]
>>> tuple2
(1, 2, 3, 4, 5, 6, 7, 8, 9)
元组中的元素不是说改就能改的
>>> tuple1[1] = 3
Traceback (most recent call last):
File "<pyshell#64>", line 1, in <module>
tuple1[1] = 3
TypeError: 'tuple' object does not support item assignment
上面想把元组的第二个元素修改成3,此时会报错
列表的标志性符号是中括号 [ ] ,那么元组的标志性符号是什么?是小括号 ( ) 吗?
那么我们先举个例子吧
>>> temp = (1)
>>> temp
1
>>> type(temp)
<class 'int'>
我们可以看到,上面小括号的类型是int
>>> temp2 = 2,3,4
>>> type(temp2)
<class 'tuple'>
上面的例子告诉我们,没有小括号,temp2的类型仍然是tuple,那么小括号不是关键,逗号才是关键
那么temp = (1) 和 temp =(1,) 和 temp = 1,有什么区别呢?
temp = (1) 就是普通元素,而temp = (1,) 因为有了逗号,所以就是元组类型,temp =1, 虽然没有小括号,但是因为有逗号,所以是类型是元组。再次证明元组的标志性符号是逗号
>>> temp1 = (1)
>>> type(temp1)
<class 'int'>
>>> temp2 =(1,)
>>> type(temp2)
<class 'tuple'>
>>> temp3 = 1,
>>> type(temp3)
<class 'tuple'>
- 创建空元组和空列表
创建空列表
>>> list1 = []
>>> type(list1)
<class 'list'>
创建空元组
>>> tuple1 = ()
>>> type(tuple1)
<class 'tuple'>
- 给元组添加新元素
>>> tuple1 = ('aa','bb','dd','ee')
>>> tuple1 = tuple1[:2] + ('cc',) + tuple1[2:]
>>> tuple1
('aa', 'bb', 'cc', 'dd', 'ee')
- 删除整个元组
>>> tuple1
('aa', 'bb', 'cc', 'dd', 'ee')
>>> del tuple1
>>> tuple1
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
tuple1
NameError: name 'tuple1' is not defined
删除整个元组后再次访问该元组就会报错。
- 元组相关的操作符
拼接操作符 +
>>> tuple1 = ('aa','bb','dd','ee')
>>> tuple1 = tuple1[:2] + ('cc',) + tuple1[2:]
>>> tuple1
('aa', 'bb', 'cc', 'dd', 'ee')
重复操作符 *
>>> temp = (8,)
>>> temp *= 8
>>> temp
(8, 8, 8, 8, 8, 8, 8, 8)
关系操作符和逻辑操作符等和列表一样