1.3 - 列表切片 与 深拷贝、浅拷贝
1.列表list常用的方法:
lst = [1,2,3]
# append(new_item)方法相当于在列表末尾追加一个元素,相当于 lst[len: ] = new_item
lst.append(4)
print(lst)
# extend(iterable) 方法,将iterable中的每个元素逐个添加到列表中,
# 相当于 lst[len: len + len(iterable)] = iterable
lst.extend({7,8,9})
print(lst)
2.列表切片Slice:
## 1. 列表切片的格式和取值逻辑
# 格式:lst[start, end, scale]
# start 和 end 表示列表索引范围区间,左闭右开
# 列取值逻辑:scale表示间隔步长,不管scale正负,切片取值依次为:start,start+scale, start+2*scale, ...
slice1 = lst[1, 5, 2]
print(slice1)
## 2. 列表切片的默认值
# start 默认0, end默认len,scale默认1
slice2 = lst[::] #等价于 slice2 = lst[0:len(list):1]
# 当且仅当 start&end缺省并且scale=-1的时候,可以取列表逆序
lst = [1,2,3,4]
print(lst[::-1])
## 3. 列表切片的注意项:list的切片是【 深拷贝 】,会生成一个副本,不影响原列表。
list的切片是深拷贝,会生成一个副本,不会影响原列表。
3. 深拷贝与浅拷贝
lst = [1,2, ['a', 'b', 'c']]
#浅拷贝列表
lst1 = lst.copy()
lst1[0] = 11
lst1[2][0] = 'aaa'
print(lst)
# 深拷贝列表
import copy
lst2 = copy.deepcopy(lst)
lst2[2][1] = 'bbb'
print(lst)
Python内部机制:解释器为了节省内存空间,如果有多个不可变类型的变量且变量的值相同,则这多个变量会指向同一个内存地址;如果是可变类型的变量,浅拷贝会
可变对象和不可变对象:在存储地址不变的情况下,其状态是否可以发生变化。
列表浅拷贝&列表深拷贝区别:浅拷贝只会复制对象的第一层元素的引用,而深拷贝会递归的复制元素的所有层次的引用。不管深浅,拷贝后