python 第六天 6.9

今日作业:
1.dict和list中copy方法图解并代码解释
2.dict中扩展字典长度(多种方法)
3.dict中获取所有的key,获取所有的value,获取所有的item
4.dict中通过一个不存在的key去获取值(要求不报错)
5.定义空集合
6.set中,求差集,求合集,求交集(要求在原集合上操作)
   添加一个元素
   删除一个元素(使用多种方法)

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

A.dict中copy解释:

字典(dict)是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据。Python字典可存储任意类型对象,如字符串、数字、元组等,优点是取值方便,速度快。

B.list中copy解释:

浅copy

 深copy

 

a.第一种情况(列表中无数组)

nameList1 = [1, 2, 3, 4, 5]
nameList2 = nameList1.copy()
nameList1[1] = 55
print(nameList1, nameList2)
[1, 55, 3, 4, 5] [1, 2, 3, 4, 5]

 因为在python中list.copy()这个函数在执行的时候,指向的不是nameList在内存中的地址,而是重新复制了一份,此时两个列表在内存中的地址不同

查看两个列表的内存 列表内存不相同

nameList = [1, 2, 3, [3, 4, 5], 4, 5]
nameList1 = nameList.copy()
nameList[1] = 55
print(id(nameList), id(nameList1))
2207528867520 2207531826048

b.第二种情况(列表中有数组)

nameList = [1, 2, 3, [3, 4, 5], 4, 5]
nameList1 = nameList.copy()
nameList[3][2] = 55
print(nameList, nameList1)
[1, 2, 3, [3, 4, 55], 4, 5] [1, 2, 3, [3, 4, 55], 4, 5]

可以看到两个list中嵌套的数组都发生了变化,这是因为在列表中存放的二维列表,实际上存放的是二维列表在内存中的地址,当修改其中一个列表,另外一个自然也会受到影响

查看两个列表的内存 列表内存相同

print(id(nameList), id(nameList1))
2879859422336 2879859422336

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

a.第一种:dict_data.setdefault(3, 4)

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

 b.第二种:dict_data[4] = 5   ([4]:key 5:value)

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

 c.第三种:dict_data.update(dict_data2)

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

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

key  (打印key+s)

a.第一种方法:

dict_data = {1: 1, 2: 3}
print(dict_data.keys())
dict_keys([1, 2])

 b.第二种方法:

dict_data = {1: 1, 2: 3}
print(set(dict_data))
{1, 2}

       set(dict-data.keys)=set(dict_data)

 value  (打印value+s)

dict_data = {1: 1, 2: 3}
print(dict_data.values())
dict_values([1, 3])

  item

print(type(dict_data.items()))
print(dict_data.items())
list_data = list(dict_data.items())
dict_data1 = dict(list_data)
print(list_data)
print(dict_data1)
[(1, 1)]
{1: 1}

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

dict_data = {1: 1}
print(dict_data.get(2))
None

5.定义空集合

错误示范(里面类型已经变为dict ,不是set类型),应该用clear方法

set_data = {}
print(type(set_data), set_data)
<class 'dict'> {}

正确方法:

set_data = {1, 2}
set_data.clear()
print(type(set_data), set_data)
<class 'set'> set()

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

差集

set_data1 = {1, 2, 3}
set_data2 = {3, 4, 5}
set_data3 = {2, 4, 6}
new_set = set_data1.difference(set_data2, set_data3)
print(new_set)
{1}

合集

set_data1 = {1, 2, 3}
set_data2 = {3, 4, 5}
set_data3 = {2, 4, 6}
new_set = set_data1.union(set_data2, )
print(new_set)
{1, 2, 3, 4, 5}

交集

set_data1 = {1, 2, 3}
set_data2 = {3, 4, 5}
set_data3 = {2, 4, 6}
new_set = set_data1.intersection(set_data2, )
print(new_set)
{3}

添加一个元素

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

 删除一个元素

set_data = {1, 3, 4, 5, 6, 7}
data = set_data.pop()
print(data, set_data)
1 {3, 4, 5, 6, 7}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值