元组,在python中用tuple表示,它与列表有些类似,可以储存数据,相较于列表的可以修改、增添元素的特性,元组一旦形成便不可以修改,就像是不可以改变的列表。
1.创建一个tuple,list的标志是一对中括号,而元组则是一对小括号
>>> t = () ;; 创建一个空元组
>>> type(t) ;; type函数用来判断括号内对象的类型
<class 'tuple'>
>>> t = (1) ;; 如果添加了元素,那么必须要有小写英文逗号,才能被判定为元组
>>> type(t)
<class 'int'>
;; 方法1
>>> t = (1,)
>>> type(t)
<class 'tuple'>
;; 方法2
>>> t = 1, ;; 没有小括号也可以,只要有逗号,也可以判定为元组
>>> type(t)
<class 'tuple'>
>>> t = 1, 2, 3, 4
>>> t
(1, 2, 3, 4)
>>> t = "5", 5, -5 ;; 添加一个有字符串、整数元素的元组
>>> t
('5', 5, -5)
2.列表和元组
Jake有两个书架,一个书架上摆满了文学书,假设这个书架是一个列表;一个则摆满了英语书,设这个是一个元组。
;; 文学书架上现在有:
>>> l = ["one", 1, 0.5]
>>> l ;; 书架上有三本书
['one', 1, 0.5]
>>> l[0] = "two" ;; Jake可以随意改变书架上的书
>>> l
['two', 1, 0.5]
>>> l[0] ;; 也可以通过索引进行读取
'two'
>>> l[1:3] ;; 通过分片来一次性拿好几本书
[1, 0.5]
;; 英语书架上现在有:
>>> t = "one", 1, 2
>>> t[0] = "two" ;; Jake想要换掉第一本书,但报错了,元组的元素一旦确定,就不能改变
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
t[0] = "two"
TypeError: 'tuple' object does not support item assignment
>>> t[0] ;; 可以通过索引来拿一本书来看
'one'
>>> t[0:] ;; 通过分片来一次性拿很多书
('one', 1, 2)
:: 不可变的元素,因为不能被修改,所以这可以避免因为其他原因而导致元组内的元素发生改变的情况
>>> t = "one", 1, 2
>>> k = list(t) ;; 利用list函数,可以将t中的元素变成一个列表,但t仍然是个元组
>>> t
('one', 1, 2)
>>> k ;; 只是利用t中的元素而已,并不会改变t
['one', 1, 2]
>>> t1 = tuple(k) ;; 同样,利用k中的元素,和tuple函数,也可以创建一个新的元组
>>> t1
('one', 1, 2)
3.tuple的函数
>>> t = (1, 3, 5, 2) ;; 创建一个新的元组
>>> t.index(1) ;; index可以通过元素名来返回该元素在元组中的位置
0
>>> t.index(5)
2
>>> t1 = (1, 2, 2, 3)
>>> t1.index(2) ;; 若是元组中有多个相同元素, 则返回由左到右的第一个元素位置
1
>>> t = (1, 2, 2, 2, 3, 3)
>>> t.count(2) ;; count用来返回所求元素在元组中的数量,元组中有3个元素名为2的元素
3
>>> t.count(3) ;; 两个元素3
2
4.特殊的tuple
>>> t = (1, 3, 4, [4, 5]) ;; 元组中可以有元素是一个列表
>>> t[3][0] ;; 这个的意思是:元组t中的第三个元素中的第0个元素
4 ;; 注意:计算机中是以0开始的,而不是以1开始
>>> t = (1, 3, 4, (4, 5, (12, 2, 4))) ;; 元组中可以存在元组
>>> t
(1, 3, 4, (4, 5, (12, 2, 4)))
>>> t = (1, 3, 4, [4, 5]) ;; 元组中存在一个列表
>>> t[3][0] = "one" ;; 因为指定的元素是一个列表的元素,所以可以更改,若是元组,则报错
>>> t
(1, 3, 4, ['one', 5])
小结:元组不可变的特性,就要求我们在元组创立之初,就要想好元组中要放哪些元素。同时,不可变也保证了数据的安全。