目录
0.元组介绍
1.元组定义和初始化
2.元组元素访问
3.命名元组namedtuple
0.元组介绍
元组是不可变对象
一个有序的元素组成的集合
使用小括号()表示
1.元组定义和初始化
1.1 tuple() -> empty tuple
>>> t = tuple()
>>> t,type(t)
((), <class 'tuple'>)
>>> t = ()
>>> t,type(t)
((), <class 'tuple'>)
>>> t = (1,2)
>>> t,type(t)
((1, 2), <class 'tuple'>)
>>> t = (1)
>>> t,type(t)
(1, <class 'int'>)
>>> t = (1,) 定义单元素元组的时候,一定要加“,”逗号
>>> t,type(t)
((1,), <class 'tuple'>)
>>> t = (1,)*3
>>> t,type(t)
((1, 1, 1), <class 'tuple'>)
>>> t = (1,2,3)*3
>>> t,type(t)
((1, 2, 3, 1, 2, 3, 1, 2, 3), <class 'tuple'>)
1.2 tuple(iterable) -> tuple initialized from iterable's items
>>> t = tuple([1,2,3,4])
>>> t
(1, 2, 3, 4)
>>> t,type(t)
((1, 2, 3, 4), <class 'tuple'>)
>>> t = tuple("4234234")
>>> t,type(t)
(('4', '2', '3', '4', '2', '3', '4'), <class 'tuple'>)
2.元组元素访问
支持索引
正索引:从左至右,从0开始,为列表中每一个元素编号
负索引:从右至左,从-1开始
正索引不可以超界,否则引发异常IndexError
元组通过索引访问:tuple[index],index就是索引,使用中括号访问
2.1 tuple[index]
>>> t = (0,1,2,3)
>>> t[1]
1
>>> t[0],t[1],t[2]
(0, 1, 2)
>>> t[4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
2.2 index(value,[start,[stop]])
通过值value,从指定区间查找列表内的元素是否匹配
匹配第一个就立即返回索引
匹配不到,抛出异常ValueError
>>> t = (0,1,2,3,4,5,6,7,8)
>>> t.index(1,0,2)
1
>>> t.index(3,3,4)
3
>>> t.index(1,-8,-1)
1
>>> t.index(1,0,1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
2.3 count(value)
返回列表中匹配value的次数
>>> t = (1,2,2,3,3,3,4,4,4,4,54)
>>> t.count(0)
0
>>> t.count(2)
2
2.4 len(tuple)
返回元素的个数
>>> t
(1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 54)
>>> len(t)
11
NOTE:元组是只读的,所以增、改、删方法都没有
3.命名元组namedtuple
namedtuple是tuple的一个子类:
1.namedtuple中的属性不可修改
2.访问方式类似于类的访问属性,通过‘.’点进行访问
3.可类比字典进行学习,但是和字典的k-v存储,访问有本质不同
>>> from collections import namedtuple #namedtuple模块导入
>>> Point = namedtuple('_Point',['x','y'])
>>> p1 = Point(1,2)
>>> p1.x
1
>>> p1.x,p1.y
(1, 2)
>>> type(Point),type(p1)
(<class 'type'>, <class '__main__._Point'>)
>>> Point.__bases__ #namedtuple为tuple的子类
(<class 'tuple'>,)
>>> Point.mro()
[<class '__main__._Point'>, <class 'tuple'>, <class 'object'>]
网友评论