Python的基本数据类型——Tuple

Neven Krcmarek

元组(Tulpe)是Python中另外的一种数据类型,和列表(List)一样也是一组有序对象的集合,大部分的属性和列表(List)一样,接下来我们来看看,Python中为什么会存在元组,以及他和列表(List)不一样的地方

定义一个元组

a=(1,2,3,4)

print(type(a))
# 输出 tuple

b=(1,True,0,'Apple',[1,2,[1,3]])

print(type(b))
# 输出 tuple

元组和列表的相同点

  • 和列表一样元素也可以通过索引和切片的方式访问元素
a=(1,True,0,'Apple',[1,2,[1,3]])

# 通过索引访问
print(a[2])
# 输出 0

print(a[-1])
# 输出 [1,2,[1,3]]

# 通过切片访问
print(a[0:2])
# 输出 (1,2)

print(a[:-1])
# 输出 (1, True, 0, 'Apple')
  • 通过 +、* 添加元素
a=(1,2,3)
a+=(4,5,6)
print(a)
# 输出 (1,2,3,4,5,6)

b=a*3
print(b)
# 输出 (1, 2, 3, 1, 2, 3, 1, 2, 3)

  • 同样适用于元组的一些内置函数
a=(1,2,3)

# 判断一个元素是否存在于元组中
print(1 in a)
# 输出 True

# 获取元组的长度
print(len(a))
# 输出 3

# 获取元组中最大元素
print(max(a))
# 输出 3

# 获取元组中最小元素
print(min(a))
# 输出 1

# 获取元组中元素的下标
print(a.index(3))
# 输出 2

# 获取元组中元素的个数
print(a.count(2))
# 输出 1

# 计算元组中元素的和
print(sum(a))

元组和列表有什么区别

看到元组的定义和访问元素的方式,你可能会很困惑,别人家的语言都没这个数据类型,Python这不是找事吗?为什么要设计一个和列表一样属性的数据类型,老子是真学不动啦!先别急,你只需记住以下几点即可。

  • 列表定义的时候使用[ ],元组使用( )
  • 列表可以改变的,但是元组不可变,也就是元组定义好以后我们不能修改里面的元素
  • 能使用元组的尽量使用元组

元组不能改变是什么意思

我们通过简单的代码演示一下数组的不可变性

a=(1,2,3,4,5)
a[0]=10

# 这个时候会抛出异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

因为元组中的元素不能修改,所以元素的没有append( )、insert( )等修改方法

删除元组

之前分享列表的时候提到删除列表的方法有很多,可以使用del、clear( )、remove( )、pop( ), 但是元组因为不能修改所以只能使用del清空元组,下面通过代码演示一下

a=(1,2,3,4)

# 删除元组
del a

元组的一些坑

  • 定义一个元素的元组
# 定义一个元素的列表
print(type([1]))
# 输出 list

# 定义一个元素的元组
print(type((1)))
# 输出 int

# 因为( ) 在python中是数学运算符号
# 正确的做法是在元素后面添加一个逗号
print(type((1,)))
# 输出tuple
  • 元组中的元素‘可变’

前面一直说元组中的元素不能修改,下面我们来演示一下元组中的元素可以修改

a=(1,2,[3,4,5])

a[0]=10
# 会报错

a[-1][-1]=10
print(a)
# 输出 (1,2,[3,4,10])

上面的案例没有报错,而且还修改成功了,你可能现在很困惑、元素到底能不能修改。

从表面上看,元组中的元素确实被修改了,但其实修改的不是元组中的元素,而是[3,4,5]这个列表中的元素。就好比元组中有三个盒子,分别是1、2、[3,4,5],这个三个盒子的位置不能变,但是这个盒子里装的东西可以变,你可以把这个盒子里的东西拿出来,你也可以往这个盒子装一头大象,但是不论你往盒子装什么,这个盒子还是之前的盒子,也就是元组中元素的指向没有发生变化。

总结:本篇文章主要分享了怎么定义一个元组、元组与列表的相同和不同之处,重点掌握元组的不可变性

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

推荐阅读更多精彩内容