元组的不可修改
1.元组是一系列的值。这些值可以是任意类型的,并且用整数序号作为索引,其实元组和列表非常相似,二者间重要的区别就是:元组不可修改。
元组的语法是一系列用逗号分隔的值:
>>> t = 'a', 'b', 'c', 'd'
通常都用一对圆括号把元组的元素包括起来,这样看起来比较规范,但没有硬性要求。
>>> t = ('a', 'b', 'c', 'd')
要建立一个单个元素构成的元组,必须要在结尾加上逗号:
>>> type(t1)
<class 'tuple'>
不加逗号结尾,就不是元组:
>>> t1 = 'a'
>>> type(t1)
<class 'str'> #如果不加逗号结尾,就是定义的字符类型str。
只用括号放一个值,也是字符str,而不是元组:
>>> t1 = ('a')
>>> type(t1)
<class 'str'>
2.另一种建立元组的方法是使用内置函数tuple。不提供参数的情况下,默认就建立一个空的元组。
>>> t2 = tuple()
>>> t2
()
如果参数为一个序列(比如字符串、列表或者元组),结果就会得到一个以该序列元素组成的元组:
>>> t3 = tuple('apple')
>>> t3
('a', 'p', 'p', 'l', 'e')
从上例可以看到,tuple已经是Python内置函数了,不能用来自定义函数了。
3.列表的各种运算符也基本适用于元组,方括号可以用来索引元素:
>>> t3
('a', 'p', 'p', 'l', 'e')
>>> t3[0]
'a'
>>> t3[1]
'p'
切片运算符也可以用于选取某一区间的元素:
>>> t3[1:2]
('p',)
>>> t3[1:3]
('p', 'p')
>>> t3[1:4]
('p', 'p', 'l')
>>> t3[1:5]
('p', 'p', 'l', 'e')
4.但如果你想修改元组中的某个元素,就会提示类型错误了,因为元组是不能修改的,你不能修改其中的元素。
>>> t3[0] = 'J'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
但是,我们可以用另一个元组来替换已有的元组。
>>> t4 = ('J',) + t3[1:]
>>> t4
('J', 'p', 'p', 'l', 'e') #这里把a替换成了J
上面这个语句建立了一个新的元组('J', 'p', 'p', 'l', 'e') ,然后让 t4 指向了这个新的元组。
5.关系运算符也适用于元组和其它序列;Python 从每个元素的首个元素开始对比。如果相等,就对比下一个元素,依此类推,直到找到不同元素为止:
>>> (0, 1, 2) < (0, 3, 4)
True
>>> (0, 1, 200) < (0, 3, 4)
True
>>> (0, 1, 200) > (0, 3, 4)
False
结束。