Python学习: tuple类型详解

注意:由于Python2将不再更新,为了避免大家混淆,以下的代码语法及特性都是基于Python3。

  今天来聊聊Python的tuple(元组)类型,如果用一句话概括,那tuple类型就是“只读”的list,因为它有list类型大部分方法和特性。那你可能要问,为什么还要有tuple类型?原因就是正因为它的“只读”特性,在操作速度和安全性上会比list更快更好。
1.元组创建及取值(注意:任意无符号的对象,以逗号隔开即创建为元组)

>>> tuple1=(1, 2, 'three', 5.1, ['six', 7])    #( )可以有,也可以没有
>>> print(tuple1)
(1, 2, 'three', 5.1, ['six', 7])
>>> tuple1[2]                   #取下标索引为2的值
'three'
>>> tuple1[2:]                 #取下标索引为2及以后的所有值
('three', 5.1, ['six', 7])
>>> tuple1[3:5]                #取下标索引为3到5的值
(5.1, ['six', 7])

>>> tuple2=()           #创建空元组必须有()
>>> type(tuple2)
<class 'tuple'>
>>> 

#当元组只有一个元素
>>> tuple3 = ('one')          #不加逗号为原类型
>>> type(tuple3)
<class 'str'>
>>> tuple3 = ('one',)           #加逗号为tuple类型
>>> type(tuple3)
<class 'tuple'>

#可以一次赋多值
>>> (x, y, z)=(1, 2, 3)
>>> print (x, y, z)
1 2 3

2.元组的修改与删除(注意:元组的元素是不能修改和删除的)

# 创建两个元组
>>> tuple5 = 1, 2
>>> tuple6 = (3, 5, 'seven')

>>> tuple6[1] = 50                     #当试图修改元组元素时,会提示错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> tuple7 = tuple5 + tuple6[2:]        #但我们可以拼接组成新元组
>>> print(tuple7)
(1, 2, 'seven')

#删除元组
>>> print(tuple6)           #打印出tuple6元素
(3, 5, 'seven')
>>> del tuple6              #删除元组
>>> print(tuple6)         #再次打印,报错提示未定义
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'tuple6' is not defined

3.tuple的内置函数与方法

#元组中的函数
>>> tuple8 = (1, 2, 3, 4, 5)             #创建元组
>>> len(tuple8)                  #返回元组元素个数
5
>>> min(tuple8)                 #返回元组中最小元素
1
>>> max(tuple8)                #返回元组中最大元素
5
>>> list8 = [1, 2, 3, 4, 5]       #创建和元组元素一样的list
>>> tuple8 == list8               #直接比较tuple8和list8,返回False
False
>>> tuple8 == tuple(list8)     #将list8用tuple函数转换后再比较,返回True
True

#元组中的方法
>>> tuple8.count(5)          #返回元素5在元组中出现的次数
1
>>> tuple8.index(3)          #返回元素3在元组中的索引值
2

4.tuple和list对比

  • tuple创建用小括号,list创建用方括号;
  • tuple不能增加、修改、删除元素,但list可以;
  • tuple操作速度比list快;
  • tuple可以转换为list,list也可以转换为tuple;
  • tuple和list都可以一次赋多值。

5.总结
  通过学习元组的特性,除了操作速度快,在一些场景中,因为其不可变性本身也提供了完整性。比如使用元组来实现函数的多返回值,作为参数传递给函数调用,或是从函数调用那里获得参数时,可以保护其内容不被外部接口所修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值