一、元组(tuple)
元组对象是序列,但是它具有不可变性,和字符串类似。从功能上讲,它用来表示确定元素的集合。它通常编写在圆括号中,但可省略。
创建元组: 字面量方式
T = (1,2,3,4)
T = 1,2,3,4
创建元组: 工厂函数方式
T = tuple('spam')
注意:当只有一个元素时逗号不可以省略
>>> T = (1)
>>> T
1 #整数
>>> T = (1,)
>>> T
(1,) #元组
>>> T = 1,
>>> T
(1,)
二、序列操作
- 索引
>>> T = ('a','b','c')
>>> T
('a', 'b', 'c')
>>> T[1]
'b'
- 分片
>>> T[0:2]
('a', 'b')
- 拼接
>>> T+(1,2,3)
('a', 'b', 'c', 1, 2, 3)
- 重复
>>> T*3
('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')
三、元组方法
>>> T.index('a')
0
---------------
>>> T.count('a')
1
四、转换和不可变性
- 转换
list和tuple内置函数用来列表和元组之间转换
>>> T = ['spam','python','django']
>>> t = tuple(T)
>>> T
['spam', 'python', 'django']
>>> t
('spam', 'python', 'django')
>>> tt = list(t)
>>> tt
['spam', 'python', 'django']
列表推导可以实现
>>> T = (1,2,3)
>>> t = [x for x in T]
>>> t
[1, 2, 3]
- 不可变性
>>> T = ('spam','python','django')
>>> T[0]='eggs'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
同样,要注意元组的不可变性只适用于元组本身顶层而并非其内容,因为元组存储的是指向其他对象的引用。
>>> T = (1,[2,3],4)
>>> T[1][0]='spam'
>>> T
(1, ['spam', 3], 4)
五、有名元组
有名元组同时提供序号和键两种访问方式。
>>> from collections import namedtuple
>>> Rec = namedtuple('Rec',['name','age','jobs'])
>>> bob = Rec('Bob',age=40,jobs=['dev','mgi'])
>>> bob
Rec(name='Bob', age=40, jobs=['dev', 'mgi'])
>>> bob
Rec(name='Bob', age=40, jobs=['dev', 'mgi'])
>>> bob[0],bob[2]
('Bob', ['dev', 'mgi'])
>>> bob.name,bob.age
('Bob', 40)
网友评论