Python基础数据类型学习1:元组

一、元组的简介

元组是个有序的序列,其中包含0至多个对象引用,元组是固定的,因此,不能替换或删除其中包含的数据项。如果我们需要修改一个元组,可以使用list()函数将其转换为列表,然后再对列表进行修改,最后通过使用tuple()再转换为元组。

二、元组的创建

空元组可使用空圆括号()创建,也可以使用tuple()函数进行创建。包含一个或多个项的元组则使用逗号分隔进行创建。有时,为避免语义的二义性,必须将元组包含在圆括号内。例如将元组传递给函数或用函数创建元组时,应写成function((1,2,3))和tuple((1,2,3))。
示例:

>>>a=()  #创建空元组
>>>b=tuple()  #利用函数创建空元组
>>>c=1,2,3  #创建含项的元组
>>>d=(1,2,3)  #创建含项的元组
>>>e=tuple((1,2,3))  #利用函数创建含项的元组
>>>f=[1,2,3]
>>>g=tuple(e)  #利用tuple()函数将列表转换为元组

三、元组的操作

(一)元组项的读取

我们首先创建一个示例元组:

>>>stu=('zhang','上海',16,'181厘米','足球')
>>>stu
('zhang','上海',16,'181厘米','足球')
stu[-5] stu[-4] stu[-3] stu[-2] stu[-1]
‘zhang' '上海' 16 '181厘米' '足球'
stu[0] stu[1] stu[2] stu[3] stu[4]

表:元组的索引位置
我们就可以通过索引位置来读取元组中具体项的内容:

>>>stu[0]
'zhang'
>>>stu[-1]
'足球'
>>>stu[4]
’足球'

利用索引位置我们一次只能读取一个项的内容,要读取多项的内容我们可以使用分片。示例:

>>>stu[2:]  #读取从第三项开始的所有项的内容,与stu[-3:]的效果一样
(16,'181厘米','足球')
>>>stu[-3:]
(16,'181厘米',‘足球')
>>>stu[1:3]  #读取第二,第三项的内容
('上海’,16)
>>>stu[:]  #读取所有项内容
('zhang', '上海', 16, '181厘米', '足球')

(二)元组的其它操作

元组除了可以使用分片操作,还可以使用+(连接)和*(赋值)操作符。同时也可以使用in与not in来测试成员的关系。元组也可以使用比较操作符(<、<=、==、!=、>=、>)进行比较,比较是逐项进行的。
示例:

>>>a=(1,2)
>>>b=(1,2)
>>>c=(1,2,3)
>>>a==b
True
>>>a!=b
False
>>>a>c
False
>>>a=a*5  #此操作并不是改变元组的值,而是生成一个新的元组,再将a指向新的元组
(1,2,1,2,1,2,1,2,1,2)
>>>newstu=stu[:2]+('高中',)+stu[2:]  #使用+连接符生成一个新的元组
>>>newstu
('zhang', '上海', '高中', 16, '181厘米', '足球')

(三)元组的方法

元组只提供了两种方法:count(x),返回对象x在元组中出现的次数;index(x),返回对象在元组中从左边算起第一次出现的位置,如果元组中不包含x时,则产生一个ValueError异常。
示例:

>>>a.count(1)
1
>>>a.index(2)
1
>>>a.index(3)
Traceback (most recent call last):
  File "", line 1, in 
    a.index(3)
ValueError: tuple.index(x): x not in tuple

(四)元组的嵌套

在一个元组内可以有多层嵌套的元组。任何嵌套层次的元组都可以使用上述的方式进行创建,也可以使用分片等方法。
示例:

>>>colors=('green','blue','red','yellow','gray')
>>>hair=('long',colors)
>>>hair  #hair里面还嵌套一个元组
('long',('green','blue','red','yellow','gray'))
>>>hair[0]  #取元组第一个项值
'long'
>>>hair[1][2]  #取元组中第二项中的第三项值
'red'
>>>hair[1][2:-1]
('red','yellow')

四、命名的元组

根据索引位置选取元组中的项有时会非常不便 ,有时特别是在对付一些复杂嵌套结构的元组时会很容易造成混乱,我们可以使用collections模块的namedtuple()函数来实现根据名称引用元组中的项。
示例:

>>>import collections
>>>stu=collections.namedtuple("stu","name age high hobby")

collections.namedtuple()中的第一个参数是要创建的自定义元组数据类型的名称,第二个参数是一个字符串,字符串中包含元组中每一项的名称,中间用空格间隔。这里我们就创建了一个名为stu的自定义元组数据类型,下面我们就可以对其进行引用了。

>>>NO1=stu("zhang",16,"181厘米","足球")
>>>NO1.name
'zhang'

你可能感兴趣的:(Python基础数据类型学习1:元组)