今日作业:
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}