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中的所有列表中元素重新复制了一份,对于多维也重新开辟了内存空间,因此不会出现内存共用的情况

posted @ 2020-09-09 11:15  dance_man  阅读(141)  评论(0编辑  收藏  举报