列表序列
1. 通过下标访问列表。
2. 删除列表元素的方法:
使用del语句:del list[idx]
使用列表函数remove: list.remove([列表元素对象]): list.remove(367).
使用列表函数pop(idx): 删除并返回列表的指定位置的元素。
3. 列表解析,使用for循环创建一个符合指定条件的列表
>>>[ i * 2 for i in [8, -2, 5] ]
[16,-4, 10]
>>>[ i for i in range(8) if i % 2 == 0 ]
[0,2, 4, 6]
4. 列表类型内建函数
列表类型内建函数
list.append(obj) 向列表中添加一个对象 obj
list.count(obj) 返回一个对象 obj 在列表中出现的次数
list.extend(seq) 把序列 seq 的内容添加到列表中
list.index(obj,i=0,
j=len(list)) 返回 list[k] == obj 的 k 值,并且 k 的范围在 i<=k<j;否则
引发 ValueError 异常.
list.insert(index,obj) 在索引量为 index 的位置插入对象 obj.
list.pop(index=-1) 删除并返回指定位置的对象,默认是最后一个对象
list.remove(obj) 从列表中删除对象 obj
list.reverse() 原地翻转列表
list.sort(func=None,key=None,reverse=False) 以指定的方式排序列表中的成员,如果 func 和 key 参数指定,则按照指定的方式比较各个元素,如果 reverse 标志被置为
True,则列表以反序排列.
注意!注意!注意!
Python中那些可以改变对象值的可变对象的方法是没有返回值的!这些可变对象的方法是在当前对象上进行操作修改当前对象而不是返回新对象。
不可变对象的方法是不能改变它们的值的,所以它们必须返回一个新的对象. 不可变对象的方法是在根据当前对象的值计算后返回新的对象。
列表有容器和可变的特性,因此可用来方便地构建其他数据结构,最直接的就是队列和堆栈。 队列是先进先出,堆栈是后进先出。列表的append()方法和pop()方法可用来实现这两个数据结构。
元组序列
元组是不可变的。如果元组元素是一个列表的话,元组在某种成都上就是可变的。Python中无法创建只有一个元素的元组。
Python的浅拷贝和深拷贝
核心模块: copy
我们刚才描述的浅拷贝和深拷贝操作都可以在 copy 模块中找到.其实 copy 模块中只有两个函数可用:copy()进行浅拷贝操作,而 deepcopy()进行深拷贝操作.
不可变对象无所谓深拷贝,浅拷贝,是创建一个新对象。
序列对象可以通过切片复制和工厂函数复制方式进行复制,例:
base=[1,2,[3,4])
copy1=base[:]#切片访问复制
copy2=list(base)#工厂函数复制
这两种复制方式在复制过程中对序列对象中可变成员的复制是引用复制而不是创建新对象,属于浅复制。如果要实现深复制,即为序列对象中可变成员创建新对象,需要使用copy模块的deepcopy(obj)方法。