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 "<pyshell#102>", line 1, in <module>
    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'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容