数据类型 -- Tuple(元组)

元组(tuple)与列表类似,也是一种序列数据类型。
元组是不可变类型,其元素不能修改。
元组中的元素是有序可重复的
元组中元素类型可以不相同。
元组写在小括号 ( ) 里,元素之间用逗号 , 隔开。

创建元组
>>> tup = ('Google', 'Neuedu', 2019, True)
>>> tup
('Google', 'Neuedu', 2019, True)
>>> type(tup)
<class 'tuple'>
  • 创建空元组
>>> tup1 = ()
>>> tup1
()
  • 创建只有一个元素的元组时,需要在元素后面添加逗号,否则括号会被当作运算符使用
>>> tup1 = (50)
>>> type(tup1)     # 不加逗号,类型为整型
<class 'int'>
 
>>> tup1 = (50,)
>>> type(tup1)     # 加上逗号,类型为元组
<class 'tuple'>
使用元组
  • 与列表类似,元组可以使用下标索引来访问元组中的值
    元组变量 [ 索引值 ]
>>> tup1 = ('Google', 'Neuedu', 1997, 2000)
>>> tup1[1])
'Neuedu'
  • 元组同样可以被截取、连接、重复,运算后会生成新的元组
    元组变量 [ 头下标:尾下标 ]
tuple = ( 'abcd', 786 , 2.23, 'neuedu', 70.2  )
tinytuple = (123, 'neuedu')
 
print (tuple)             # 输出完整元组
print (tuple[0])          # 输出元组的第1个元素
print (tuple[1:3])        # 输出从第2个到第3个元素
print (tuple[2:])         # 输出从第3个元素开始的所有元素
print (tinytuple * 2)     # 输出两次元组
print (tuple + tinytuple) # 连接元组

('abcd', 786, 2.23, 'neuedu', 70.2)
abcd
(786, 2.23)
(2.23, 'neuedu', 70.2)
(123, 'neuedu', 123, 'neuedu')
('abcd', 786, 2.23, 'neuedu', 70.2, 123, 'neuedu')
修改元组
  • 元组中的元素值是不允许修改的。
>>> tup = (1, 2, 3, 4, 5, 6)
>>> tup[0] = 11  # 修改元组元素的操作是非法的
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
  • 虽然元素值是不允许修改的,但我们可以对元组进行连接组合
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2;  # 创建一个新的元组
print (tup3)
(12, 34.56, 'abc', 'xyz')
  • 元组中可以包含可变的对象,比如列表,但通常不这样做
>>> tup = ([1,2,3,4])
>>> type(tup)
<class 'list'>

>>> tup = ([1,2,3,4],)
>>> type(tup)
<class 'tuple'>

>>> tup[0]
[1, 2, 3, 4]

>>> tup[0][1]
2

>>> tup[0] = [11,22,33]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

>>> tup[0][1] = 222
>>> tup[0][1]
222
  • 思考下列代码中,元组的内容为什么可以改变
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
  • 原因:
    定义的时候tuple包含的3个元素:


当我们把list的元素'A''B'修改为'X''Y'后,tuple变为:

  • 表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list
  • tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

删除元组
  • 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
>>> tup = ('Google', 'Neuedu', 1997, 2000)
>>> del tup
>>> tup
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'tup' is not defined
元组运算符
表达式 结果 描述
len((1, 2, 3)) 3 计算元素个数
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接
('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 复制
3 in (1, 2, 3) True 元素是否存在
for x in (1, 2, 3): print (x,) 1 2 3 迭代
元组函数
函数 作用
len(tuple) 获得元组元素个数
max(tuple) 返回元组元素最大值
min(tuple) 返回元组元素最小值
tuple(seq) 将列表转换为元组
>>> tuple1 = ('Google', 'Neuedu', 'Taobao')
>>> len(tuple1)
3

>>> tuple2 = ('5', '4', '8')
>>> max(tuple2)
'8'

>>> tuple2 = ('5', '4', '8')
>>> min(tuple2)
'4'

>>> list1= ['Google', 'Taobao', 'Neuedu', 'Baidu']
>>> tuple1=tuple(list1)
>>> tuple1
('Google', 'Taobao', 'Neuedu', 'Baidu')




- end -

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

推荐阅读更多精彩内容