一、元组特性介绍
二、⾼效创建元组
In [1]: t1 = () # 创建 空 元素的元组
In [2]: type(t1)
Out[2]: tuple
有元素的元组实际上是使⽤英⽂的逗号创建的
In [3]: n = (3)
In [4]: n
Out[4]: 3
In [5]: type(n)
Out[5]: int
In [6]: t = 3,
In [7]: t
Out[7]: (3,)
In [8]: type(t)
Out[8]: tuple
创建⾮空元素的元组是⽤逗号 ,⽽不是⽤⼩括号
三、转换
tuple() 可以对其他序列类型的数据转换为元组。
In [9]: s1 = 'car'
In [10]: s1
Out[10]: 'car'
In [11]: list(s1)
Out[11]: ['c', 'a', 'r']
In [12]: tuple(s1)
Out[12]: ('c', 'a', 'r')
In [13]: t2 = tuple(s1)
In [14]: t2
Out[14]: ('c', 'a', 'r')
In [15]: tuple([1,2,3])
Out[15]: (1, 2, 3)
四、元组的取值
元组也是序列类型的数据,取值和切⽚和列表的操作⼀样
In [20]: t1 = (1,2,3, ['a','b'],'liang')
In [21]: t1
Out[21]: (1, 2, 3, ['a', 'b'], 'liang')
In [22]: t1[-1]
Out[22]: 'liang'
In [23]: t1[-2]
Out[23]: ['a', 'b']
In [24]: t1[-2][-1]
Out[24]: 'b'
In [25]: t1[1:-1]
Out[25]: (2, 3, ['a', 'b'])
In [26]: t1[3:-4]
Out[26]: ()
In [27]: t1[3:4]
Out[27]: (['a', 'b'],)
五、元组的⽅法
count 统计⼀个元素在元组内出现的次数
index 返回⼀个元素在元组内的索引
In [20]: t1 = (1,2,3, ['a','b'],'liang')
In [28]: t1. # 按 Tab 键
count() index() # 可以看出没有可以改变其⾃身的⽅法
In [28]: t1.count(1)
Out[28]: 1
In [29]: t1.count(10)
Out[29]: 0
In [30]: t1.index(1)
Out[30]: 0
In [31]: t1.index(3)
Out[31]: 2
六、元组的相对不可变
元组本身是不可变的,就是元组内的元素是不可变的,⼀旦创建⼀个元组,这个元组内的元素个数和数据都是固定的了 相对不可变的意思是,元组内的元素⾃身是可变的数据对象,就可以通过修改这个可变元素,来间接改变元组的样⼦。
内置函数 id() , 这个函数可以返回python 中⼀个对象的内存地址(id 号)
In [32]: id('hello')
Out[32]: 140096984653232
In [33]: t1
Out[33]: (1, 2, 3, ['a', 'b'], 'liang')
In [34]: id(t1)
Out[34]: 140097075906512
接下来就来验证元组是相对不可变的
假设我想把上个示例中的元组 t1 中列表元素‘b’删除
In [35]: t1[-2]
Out[35]: ['a', 'b']
In [36]: id(t1[-2]) # 改变前的 id
Out[36]: 140097076313776
In [37]: t1[-2]
Out[37]: ['a', 'b']
In [39]: t1[-2].pop()
Out[39]: 'b'
In [40]: t1
Out[40]: (1, 2, 3, ['a'], 'liang')
In [41]: id(t1[-2]) # 改变后的 id
Out[41]: 140097076313776
七、for 循环元组
In [43]: t = ('liang',1314,521)
In [44]: for i in t:
...: print(i)
...:
#结果
liang
1314
521
In [45]:
八、元组的优点