
1.5.2 元组
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组的创建很简单,只需要在括号中添加元素,并使用逗号隔开。元组的元素都有确定的顺序,元组的索引也是以0为基点的。
1.元组的创建与删除
在Python中创建元组有两种方法,即“直接以赋值操作符创建元组”和“创建数值元组”。下面分别介绍。
(1)直接以赋值操作符创建元组
通常创建元组可使用圆括号将数据括起来,也可以将一些值用逗号隔开,这样就能自动创建一个元组。与其他类型的变量一样,创建元组时也可使用赋值操作符“=”将元组赋值给变量。需要注意的是,当元组中只有一个元素时,需要在最后加一个逗号,以防止跟普通的分组操作符混淆,创建元组的示例如下所示。
【例1-32】创建元组示例
>>> 'a','b','c' # 将一些值用逗号隔开,自动创建元组 ('a', 'b', 'c') >>> ('a','b','c') # 用圆括号创建元组 ('a', 'b', 'c') >>> a = (0,1,2) # 用“=”将元组赋值给变量a >>> a[1] # 元组支持使用下标访问特定位置的元素 1 >>> a[-1] # 元组支持双向索引 2 >>> a[0]=2 # 元组不可变 TypeError: 'tuple' object does not support item assignment >>> b = (4,) # 元组中只有一个元素,在最后加上一个逗号 >>> b (4,) >>> c = () # 创建空元组 >>> d = tuple()
(2)创建数值元组
Python提供的tuple()函数可以将range()函数循环出来的结果转换成数值元组。
【例1-33】创建数值元组示例
>>> tuple(range(10)) # 将迭代对象转换为元组 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
2.访问元组元素
元组可以使用下标索引来访问元组中的值,示例如下。
【例1-34】访问元组元素示例
>>> aTuple=(1,'a',2.0,['i','love','python']) >>> aTuple[0:3] # 访问前三个元素 (1, 'a', 2.0) >>> aTuple[1:3] # 访问特定位置的元素 ('a', 2.0) >>> aTuple[:4] (1, 'a', 2.0, ['i', 'love', 'python']) >>> aTuple[3][2] 'python'
3.修改元组元素
元组是不可变类型,即不能更新或者改变元组中的元素,也无法在元组中添加和删除元素。但是,可以通过对元组重新赋值或拼接来修改元组中的元素。在元组连接时,连接的内容必须都是元组,如果要连接的元组只有一个元素,那么一定不要忘了后面的逗号,参考如下示例中的使用方法。
【例1-35】修改元组元素示例
>>> aTuple = aTuple[0],aTuple[1],aTuple[2] # 对元组进行重新赋值 >>> aTuple (1, 'a', 2.0) >>> a = ('i',) >>> b = ('love',) >>> c = ('python',) >>> aTuple = a+b+c # 对元组进行连接组合 >>> aTuple ('i', 'love', 'python')
4.删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。
【例1-36】删除元组示例
>>> tup = ('physics', 'chemistry', 1997, 2000) >>> del tup >>> tup NameError: name 'tup' is not defined
5.元组运算符
与字符串一样,元组之间可以使用“+”和“*”来进行运算。这就意味着它们可以组合和复制,运算后会生成一个新的元组。常见的元组运算符如表1-7所示。
表1-7 元组运算符表
6.元组的索引和截取
元组也是一个序列,所以我们可以访问元组中指定位置的元素,也可以截取索引中的一段元素。
tuple=('a', 'b', 'c')
元组的索引和截取示例如表1-8所示。
表1-8 元组的索引和截取举例