Python-内置数据结构之元组(tuple)

一、元组--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', ' ']

    

为什么要坚持,想一想当初!
原文地址:https://www.cnblogs.com/JerryZao/p/9432949.html