python5

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

(1)dict浅拷贝

dict_data与dict_data2是独立的个体,但二者中的元素指的是同一个,所以当其中一个改变时,另一个也随之改变

注:手绘图中,红色是第一次内存,黑色是其他

dict_data = {1: [1, 2, 3]}
dict_data2 = dict_data.copy()
print(dict_data2)
print(id(dict_data[1]))
print(id(dict_data2[1]))
print(id(dict_data))
print(id(dict_data2))
dict_data[1][2] = 6
print(dict_data)
print(dict_data2)

运行结果

{1: [1, 2, 3]}
1925148646656
1925148646656
1925148575040
1925148575232
{1: [1, 2, 6]}
{1: [1, 2, 6]}

(2)dict深拷贝 

dict_data与dict_data2完全独立,二者的元素不同,故当一个改变时,另一个不变

import copy

dict_data = {1: [1, 2, 3]}
dict_data2 = copy.deepcopy(dict_data)
print(dict_data2)
print(id(dict_data[1]))
print(id(dict_data2[1]))
print(id(dict_data))
print(id(dict_data2))
dict_data[1][0] = 9
print(dict_data)
print(dict_data2)

 运行结果:

{1: [1, 2, 3]}
1925255857216
1925255554944
1925255464256
1925255535936
{1: [9, 2, 3]}
{1: [1, 2, 3]}
 

(3)list浅拷贝

list_data与list_data2独立,列表外层改变,另一个不变,列表内层改变,另一个随之改变

list_data = [1, [2, 3]]
list_data2 = list_data.copy()
print(list_data2)
print(id(list_data2))
print(id(list_data))
print(id(list_data[0]))
print(id(list_data[0]))
list_data[1][1] = 55
list_data[0] = 6
print(list_data)
print(list_data2)

运行结果:

[1, [2, 3]]
2688499980928
2688499980800
2688498952496
2688498952496
[8, [2, 55]]
[1, [2, 55]]
 

(4)list深拷贝

import copy

list_data = [1, [2, 3]]
list_data2 = copy.deepcopy(list_data
print(list_data2)
print(id(list_data))
print(id(list_data2))
print(id(list_data[0]))
print(id(list_data2[0]))
print(id(list_data[1]))
print(id(list_data2[1]))
list_data[1][1] = 56
print(list_data)
print(list_data2)

运行结果:

 [1, [2, 3]]
1623764201024
1623764199296
1623762430256
1623762430256
1623764497664
1623764654912
[1, [2, 56]]
[1, [2, 3]]

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

(1)key = value

dict_data = {1: 2, 2: 3}
dict_data[3] = 4
print(dict_data)

运行结果:

{1: 2, 2: 3, 3: 4}

(2)setdefault-------插入

dict_data = {1: 2, 2: 3, 3: 4}
dict_data.setdefault(4, 5)
print(dict_data)

运行结果:

{1: 2, 2: 3, 3: 4, 4: 5}

(3)update-------迭代(字典,元组((key, value), (key, value)),列表【【key, value】, 【key, value】】)

dict_data = {1: 2, 2: 3, 3: 4}
dict_data1 = {4: 5}
dict_data.update(dict_data1)
print(dict_data)

运行结果:

{1: 2, 2: 3, 3: 4, 4: 5}

3.dict中获取所有的key,获取所有的value,获取所有的item

(1)key

dict_data = {1: 2, 2: 3, 3: 4}
data = dict_data.keys()
print(data)

运行结果:

dict_keys([1, 2, 3])

(2)value

dict_data = {1: 2, 2: 3, 3: 4}
data = dict_data.values()
print(dict_data)
print(data)

运行结果:

{1: 2, 2: 3, 3: 4}
dict_values([2, 3, 4])

(3)item

dict_data = {1: 2, 2: 3}
data = dict_data.items()
print(data)

运行结果:

dict_items([(1, 2), (2, 3)])

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

(1)get

dict_data = {1: 2, 2: 3}
data = dict_data.get(3)
print(data)

运行结果:

None

(2)setdefault

dict_data = {1: 2, 2: 3}
data = dict_data.setdefault(3)
print(data)

运行结果:

None

5.定义空集合

data = set()
print(data)
print(type(data))

运行结果:

set()
<class 'set'>
 

6.set中,求差集,求合集,求交集(要求在原集合上操作)
   添加一个元素
   删除一个元素(使用多种方法)

(1)差集

set_data = {1, 3, 5, 7, 9}
set_data2 = {1, 2, 3, 4, 5}
set_data.symmetric_difference_update(set_data2)
print(set_data)

运行结果:

{2, 4, 7, 9}

(2)合集

set_data = {1, 3, 5, 7, 9}
set_data2 = {1, 2, 3, 4, 5}
set_data.update(set_data2)
print(set_data)

运行结果:

{1, 2, 3, 4, 5, 7, 9}

(3)交集

set_data = {1, 3, 5, 7, 9}
set_data2 = {1, 2, 3, 4, 5}
set_data.intersection_update(set_data2)
print(set_data)

运行结果:

{1, 3, 5}
 

(4)添加一个元素

add------添加------将元素添加到集合中

set_data = {1, 3, 5}
set_data.add(4)
print(set_data)

运行结果:

{1, 3, 4, 5}

(5)删除一个元素

(1)clear(删除所有元素)

set_data = {1, 2, 3}
set_data.clear()
print(set_data)

运行结果:

set()

(2)pop

set_data = {1, 2, 3, 4, 5, 6, 7}
data = set_data.pop()
print(data, set_data)
运行结果:

1 {2, 3, 4, 5, 6, 7}

(3)remove 

set_data = {1, 2, 3, 4, 5, 7, 8}
set_data.remove(8)
print(set_data)

运行结果:

{1, 2, 3, 4, 5, 7}

(4)discard  

set_data = {1, 2, 3, 4, 5, 7, 8}
set_data.discard(1)
print(set_data)

运行结果:

{2, 3, 4, 5, 7, 8}
 

(5) difference_update

set_data = {1, 2, 3, 4, 5, 7, 8}
set_data1 = {1}
set_data.difference_update(set_data1)
print(set_data)

运行结果:

{2, 3, 4, 5, 7, 8}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值