栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python当中浅拷贝和深拷贝详细介绍和dict与set的操作方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python当中浅拷贝和深拷贝详细介绍和dict与set的操作方法

1.dict和list中copy方法画图加代码解释

dict的浅拷贝

a和b两者是独立的,但里面的列表还是同一个,因此a列表改变后b列表也会随之改变

 

 dict的深层拷贝

深层拷贝两者独立,创建新的列表,所以a字典当中列表改变吧当中也不会改变

import copy


dict_data = {1: [1, 2, 3]}
newdict_data = copy.deepcopy(dict_data)
print(id(dict_data[1]))
print(id(newdict_data[1]))
print(id(dict_data))
print(id(newdict_data))
dict_data[1][1] = 8
print(dict_data)
print(newdict_data)
结果
1599513995264
1599513988608
1599512539712
1599512590208
{1: [1, 8, 3]}
{1: [1, 2, 3]}

list的浅层拷贝

浅拷贝, a

list_data1和 list_data2 是一个独立的对象,但他们的子对象还是指向统一对象(是引用),列表外层改变时另一个也改变。

list_data1 = [1, [1, 2, 3]]
list_data2 = list_data1.copy()
print(id(list_data1[1]))
print(id(list_data2[1]))
print(id(list_data1))
print(id(list_data2))
list_data1[1][1] = 8
print(list_data1)
print(list_data2)
结果
2568433930048
2568433930048
2568433849024
2568433928960
[1, [1, 8, 3]]
[1, [1, 8, 3]]

深拷贝:: 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。列表外层改变时另一个不改变

import copy


list_data1 = [1, [1, 2, 3]]
list_data2 = copy.deepcopy(list_data1)
print(id(list_data1[1]))
print(id(list_data2[1]))
print(id(list_data1))
print(id(list_data2))
list_data1[1][1] = 8
print(list_data1)
print(list_data2)
结果
2093104539584
2093104537792
2093104532928
2093104532672
[1, [1, 8, 3]]
[1, [1, 2, 3]]


2.dict中扩展字典长度(多种方法)

setdefault(self, key, default=None, /)插入键和值

dict_data[4] = 5,直接创建键和值

update  更新字典来扩展长度
3.dict中获取所有的key,获取所有的value,获取所有的item


4.dict中通过一个不存在的key去获取值(要求不报错)

第一种使用setdefault的方法来获取(拓展了字典内容)

第二种使用get获取(不改变字典内容)

 
5.定义空集合

第一种直接定义

 第二种先创建一个集合,将其中元素删除即为空集合

 
6.set中,求差集,求合集,求交集(要求在原集合上操作)

合集 :  update(...)
 |      Update a set with the union of itself and others.

 差集:symmetric_difference_update(...)
 |      Update a set with the symmetric difference of itself and another.

 交集:intersection_update(...) | Update a set with the intersection of itself and another.

 


   添加一个元素

add(...)

| Add an element to a set.

 
   删除一个元素(使用多种方法)

第一种clear直接删除所有

 第二种remove删除元素

 第三种discard()方法

说明:discard方法删除元素时,元素不存在,不会引发任何错误

第四种pop方法

说明:从set中随机删除并返回一个元素,set为空会引发KeyError

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/958198.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号