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内部机制:解释器为了节省内存空间,如果有多个不可变类型的变量且变量的值相同,则这多个变量会指向同一个内存地址;如果是可变类型的变量,浅拷贝会

可变对象和不可变对象:在存储地址不变的情况下,其状态是否可以发生变化。

 

列表浅拷贝&列表深拷贝区别:浅拷贝只会复制对象的第一层元素的引用,而深拷贝会递归的复制元素的所有层次的引用。不管深浅,拷贝后

 

posted @ 2024-01-05 16:14  橘子葡萄火龙果  阅读(44)  评论(0编辑  收藏  举报