python核心数据类型 -- 列表类型
列表为容器类型可变可异构可嵌套对象,可以通过索引访问列表元素
定义列表的方式
list1 = []
list1 = list()
原处修改
实际上是修改元素引用
修改指定索引的元素
list1[1] = 2 --> 修改列表的第2个元素
修改指定的分片
list1[2:4] = [3, 4] --> 修改列表的第3,4个元素
删除指定索引的元素
list1[1:2] = [] --> 删除列表的第2个元素
删除指定的分片
list1[1:3] = [] --> 删除列表的第2,3个元素
删除语句
del(list1[2:]) --> 删除列表的第2个以后的所有元素
适用于列表的操作 内置方法
追加
L.append(object) -> append object to end:将对象作为元素追加到列表
L.extend(iterable) -> extend list by appending elements from the iterable:将可迭代对象的元素附加到列表
插入
L.insert(index, object) -- insert object before index 在指定位置之前插入一个元素
删除
L.pop([index]) -> item -- remove and return item at index (default last)删除指定索引的元素IndexError
L.remove(value) -- remove first occurrence of value.删除指定值的元素ValueError
计数
L.count(value) -> integer -- return number of occurrences of value 统计指定值出现的次数
排序
L.sort()正向原处排序
L.reverse() -- reverse IN PLACE 逆向原处排序
查找
L.index(value, [start, [stop]]) -> integer -- return first index of value.
查找列表元素第一次出现的位置ValueError
L.append(X) <==> L[len(X):] = [X]
列表复制
l2 = l1 :赋值后实际指向同一个内存对象,两个是同步的
l3 = l1[:] :赋值后实际指向内存对象不同,两个是不同步的
l4 = copy.deepcopy(l1) :深度复制(copy模块),两个是不同步的
l5 = [i for i in l2]:使用列表解析进行复制,两个是不同步的
列表解析
生成列表
[ord(x) for x in 'Spaam']
[83, 112, 97, 97, 109]
生成集合
{ord(x) for x in 'Spaam'}
{83, 97, 109, 112}
生成字典
{x: ord(x) for x in 'Spaam'}
{'S': 83, 'a': 97, 'm': 109, 'p': 112}
生成器
M = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
G = (sum(row) for row in M)
G
G.netx() #用来访问
<generator object <genexpr> at 0x7fbd8387c910>
列表解析和for循环
squares = [ x ** 2 for x in [1, 2, 3]]
for x in [1, 2, 3]:
squares.append(x ** 2)
通常优势考虑使用列表解析,速度快于for循环