1、dict和list中copy的方法
dict浅拷贝
dict_data = {1: [1, 2, 3]}
dict_data2 = dict_data.copy()
print(dict_data2)
print(dict_data2[1])
print(id(dict_data2[1]))
print(id(dict_data[1]))
dict_data[1][1] = 4
print(id(dict_data))
print(id(dict_data2))
{1: [1, 2, 3]}
[1, 2, 3]
1817902392384
1817902392384
1817902325568
1817902325824
随着父目录变化子目录随之变化
2、dict的深拷贝
import copy
dict_data = [1, 2, 3]
dict_data2 = copy.deepcopy(dict_data)
print(dict_data2)
print(id(dict_data[1]))
print(id(dict_data2[1]))
dict_data[1] = 0
print(id(dict_data[1]))
print(id(dict_data2[1]))
[1, 2, 3]
1836514437456
1836514437456
1836514437392
1836514437456
深拷贝独立不会因为父目录改变而子目录改变
list浅拷贝
list_data = [1, 2, 3]
list_data2 = list_data.copy()
print(list_data2)
print(id(list_data[1]))
print(id(list_data2[1]))
list_data2[0] = 2
print(id(list_data[0]))
print(id(list_data2[0]))
[1, 2, 3]
1671108061520
1671108061520
1671108061488
1671108061520
浅拷贝改变最外层另一个不会改变,改变最里层另一个会改变
list深拷贝
import copy
list_data = [1, 2, 3]
list_data2 = copy.deepcopy(list_data)
print(list_data2)
print(id(list_data[1]))
print(id(list_data2[1]))
list_data[0] = 2
print(id(list_data[0]))
print(id(list_data2[0]))
[1, 2, 3]
2108786764112
2108786764112
2108786764112
2108786764080
随着父目录的改变子目录不发生改变
2、dict中扩展字典长度(多种办法)
1、
dict_data = {int: 2, bytes: 1+2j, float: 3.3}
print(dict_data.setdefault(2, 4))
print(dict_data)
4
{<class 'int'>: 2, <class 'bytes'>: (1+2j), <class 'float'>: 3.3, 2: 4}
2、
dict_data = {int: 2, bytes: 1+2j, float: 3.3}
dict_data[4] = 1
print(dict_data)
{<class 'int'>: 2, <class 'bytes'>: (1+2j), <class 'float'>: 3.3, 4: 1}
3、dict中获取所有的key,获取所有的value,获取所有的item
dict_data = {1: 2, 2: 3}
print(dict_data.keys())
print(dict_data.values())
print(dict_data.items())
dict_keys([1, 2])
dict_values([2, 3])
dict_items([(1, 2), (2, 3)])
4、dict中通过一个不存在的key去获取值(要求不报错)
dict_data = {int: 2, bytes: 1+2j, float: 3.3}
dict_data.setdefault(2.2)
print(dict_data)
{<class 'int'>: 2, <class 'bytes'>: (1+2j), <class 'float'>: 3.3, 2.2: None}
5、定义空集合
set_data = {1, 2, 3}
set_data.clear()
print(set_data, type(set_data))
None
set() <class 'set'>
6、set中求差集,求合集,求交集
(1)差集
set_data = {1, 2, 3}
set_data2 = {2, 3, 4}
print(set_data.difference(set_data2))
{1}
(2)合集
set_data = {1, 2, 3}
set_data2 = {2, 3, 4}
print(set_data.union(set_data2))
{1, 2, 3, 4}
(3)交集
set_data = {1, 2, 3}
set_data2 = {2, 3, 4}
print(set_data.intersection(set_data2))
{2, 3}
增加、删除元素
set_data = {1, 2, 3}
set_data.add(4)
print(set_data)
set_data.clear()
print(set_data)
set_data.pop()
print(set_data)
set_data.remove(3)
print(set_data)
{1, 2, 3, 4}
set()
set()
{1, 2, 3}