- 常用序列:list,string, tuple(只读列表)
- 序列类似数组, 但可以包含不同类型的对象,长度也可变化
- 成员关系操作符(in, not in)
- 连接操作符(+)
- 重复操作符(*)
- 切片操作符([],[:],[::])
- 一些引号分隔的字符
- 不可分字符类型
- 字符串格式化操作符(%)提供类似printf()的功能
- 三引号
- 原始字符串对每个特殊字符串都使用它的原意
- Python字符串不是通过NUL或者‘\0’来结束的
- 字符串连接
- 使用 ''.join(['wxl ',' sci'])或者 '%s%s' % ('foo','bar') 替代 + 拼接
- 少量数据使用 += 拼接, 大量数据使用 ''.join 更高效。
- 空列表已有40字节空间, 不够时每次申请4个元素的空间, 用完后再继续申请
l = [] ; l.sizeof()
- 元组是由逗号决定的,而不是括号。 b = ("Python") 是一个字符串 b = ("Python",) 才是一个元组
解析表达式、列表推导式 data = [x for x in range(10) if x %2 == 0]
生成器表达式 (惰性计算,每次处理一个对象,而不是直接构造整个数据结构,节约内存) data = (x for x in range(10) if x %2 == 0)
###常用内置函数 l = [1,2,3,4]
- l.count(3)
- l.index(7)
- l.reverse()
- l.sort()
tup=(1,2,3,4)
- tup.count(3)
- tup.index(7)
- reversed(tup)
- sorted(tup)
- 总的来说,列表和元组都是有序的,可以存储任意数据类型的集合,区别主要在于下面这两点。
- 列表是动态的,长度可变,可以随意的增加、删减或改变元素。列表的存储空间略大于元组,性能略逊于元组。
- 元组是静态的,长度大小固定,不可以对元素进行增加、删减或者改变操作。元组相对于列表更加轻量级,性能稍优。
- 浅拷贝
浅拷贝,是指重新分配一块内存,创建一个新的对象,里面的元素是原对象中子对象的引用l = [1,2,3] n = list(l) for i in range(l.__len__()): print("list l element{} address is: {} ".format(i,id(l[i]))) print("list n element{} address is: {} ".format(i, id(n[i]))) ------------------------------------------------------------------ list l element0 address is: 140734895190272 list n element0 address is: 140734895190272 list l element1 address is: 140734895190304 list n element1 address is: 140734895190304 list l element2 address is: 140734895190336 list n element2 address is: 140734895190336 - 深拷贝
所谓深度拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联x = [1,2,3] y = copy.deepcopy(x)