一、元组--tuple
1、元组格式:(1,2) 、(1,2,'s'), (1,) ----一个元素的时候,要补一个逗号
2、元组的特点:
有序的元素组成的集合
一旦定义,就不可被修改(增,删,改),只能查看
3、元组的定义 初始化
定义:和list一样
tuple() or tuple(iterable) or t = () (前两者是工厂方法)
1 t = tuple(range(1,7,2)) 2 print(t) 3 t1 = t * 3 4 print(t,t1) # (1, 3, 5) (1, 3, 5, 1, 3, 5, 1, 3, 5)
4、对元组的操作:
除了列表的增,删,改,都可以用,一样的效果,索引等
5、命名元组namedtuple:(帮助文档中,有使用例子)
namedtuple(typename,field_names,verbose=False,rename=False)
命名元组,返回一个元组的子类,并定义了字段
field_names 可以是空白符或逗号分隔符的字段的字符串,可以是字段的列表
1 from collections import namedtuple 2 Point = namedtuple('_point',['x','y']) # '_point' 是类型名,['x','y']:是字段 3 p = Point(11,22) # p是一个对象(类似对象,Point类产生一个又一个的对象) 4 print(p.x) # 11 5 print(p.y) # 22 6 print(p) # _point(x=11, y=22) 7 8 Student = namedtuple('Student','name age') # Point = namedtuple('_point',('x','y')) 9 tom1 = Student('tom',20) 10 tom1.name # 'tome' 11 tom1.age # 20 12 print(tom1) # Student(name='tom', age=20)
namedtuple的部分原码:
1 if isinstance(field_names, str): 2 field_names = field_names.replace(',', ' ').split() 3 field_names = list(map(str, field_names)) 4 typename = _sys.intern(str(typename))
#
注:
1、写程序,注意的是空间复杂度 和 时间复杂度,所以该少用就得少用,否则效率很低
2、list:最好不要挪动,找某个元素,替换或者尾部操作是可以的
3、max(1) X max([1]) v max((2,)) V
4、初始化一个列表 比 初始化一个元组慢
5、所谓的不能改不是绝对的!!!!
1 tu = (11, 22, 33, [9, 3], 44,) 2 tu[3][1] = 1 3 print(tu) # (11, 22, 33, [9, 1], 44)
扩展:
map():map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。map后面的参数是一个可迭代对象,执行map时,相当于执行一个for循环.
字符串的 split():v = test.split('s',2) # 以s分隔,分隔两次,不保留分隔符,以列表形式返回
1 s = ',abds sda, ' 2 l = s.split(',',2) 3 print(l) # ['', 'abds sda', ' ']