list
List
和String类型一样可索引和分片,同时可修改数据。索引下标从0开始
lst = ['hello',1,1.0,False,'world']
print(lst)
['hello', 1, 1.0, False, 'world']
常用函数
名称 | 说明 | 用法 |
---|---|---|
append | 在末尾添加新的元素 | list.append(4) |
clear | 清除列表中所有的数据 | list.clear() |
copy | 浅拷贝 | list.copy() |
count | 查看元素在列表中出现的次数 | list.count(2) |
extend | 在末尾一次性追加另外一个列表中的多个值 | list.extend([1,2]) |
index | 从指定范围的列表中指出某个值第一个匹配的下标索引;若不指定范围,则默认是整个列表 | list.index(object[, start][, stop]) |
insert | 在下标处插入元素,不覆盖原本数据。原数据向后顺延 | list.insert(0,1) |
pop | 移除列表中指定下标处的元素(默认移除最后一个元素),并返回移除的数据 | list.pop() |
remove | 移除列表中的某个元素第一个匹配结果 | list.remove(2) |
reverse | 将列表中的元素倒序,操作原列表,不返回新的列表 | list.reverse() |
sort | 将list中的元素进行升序排列(默认reverse=False),当reverse为True时,为降序排列 | list.sort(reverse=False) |
列表可修改,有很多方法,如:
删除元素: pop(有返回值),del(无法回值)
>>> a = [0,1,2,3,4]
>>> del a[-1] #del删除没有返回值
>>> a
[0, 1, 2, 3]
>>> del a[1:3] #删除index范围
>>> a
[0, 3]
>>> del a #删除整个变量
>>> a
[]
>>> a = [0,1,2,3,4]
>>> a.pop() #不填写index,则默认index为-1。有返回值
4
>>> b = a.pop(1) #删除指定index
>>> print(a)
[0,2,3]
>>> print(b)
1
如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用
del
语句;如果你要在删除元素后还能继续使用它,就使用pop
根据值删除元素remove
>>> a = [1,2,3]
>>> a.remove(2)
>>> print(a)
[1,3]
拷贝
1、赋值拷贝/引用拷贝
>>> a = [1,2,3]
>>> b = a
>>> a.append(4)
>>> print(b)
[1,2,3,4]
指向同一个内存地址,类似快捷方式
2、浅拷贝
>>> a = [1,2,3,[4,5]]
>>> b = a.copy()
>>> a.append(9)
>>> print(a,b)
>>> print(id(a[3]),id(a))
>>> print(id(b[3]),id(b))
[1, 2, 3, [4, 5], 9] [1, 2, 3, [4, 5]]
139912453078920 139912453106184
139912453078920 139912453165192
>>> a[3].append(6)
>>> print(a,b)
[1, 2, 3, [4, 5, 6]] [1, 2, 3, [4, 5, 6]]
相当于
b = a[::]
注意: 只适用于一维列表
不完全内存拷贝,对于一维列表重新开辟了一块内存空间,但若出现二维列表的情况下,因为二维列表存放在一维列表中存放的是列表地址,因此若出现二维列表相当于间接的引用了同一块内存区域
3、深度拷贝
import copy
list1 = copy.deepcopy(list1)
>>> import copy
>>> a = [1,2,3,[4,5]]
>>> b = copy.deepcopy(a)
>>> a[3][1] = 6
>>> print(a,b)
[1, 2, 3, [4, 6]] [1, 2, 3, [4, 5]]
完全内存拷贝,相当于将list1中的所有列表中元素重新复制了一份,对于多维也重新开辟了内存空间,因此不会出现内存共用的情况