集合,字典

深浅拷贝

deepcopy 深拷贝:会递归拿到原值的每一个引用,完全复制一份副本,修改拷贝前的值和拷贝后的值没有联系,相互独立;

copy 浅拷贝:只复制第一层数值的引用,当有数值多层时,不会获取下一层的引用关系;

ls = [2,1,'abc',['贡山','流水']]
ln = ls.copy()
print(id(ls),id(ln))
ls[1] = '修改'
ls[3][0] = '都修改了'
print(ls,ln)
# 2626240799432 2626242027784
# [2, '修改', 'abc', ['都修改了', '流水']] [2, 1, 'abc', ['都修改了', '流水']]

 

散列类型(无序):

集合:无序不重复元素的集合,集合是可变的,但集合中的元素必须是不可变类型

空集合的定义方式:set()

1、添加元素:

.add(obj)  像集合中添加一个元素,如果集合中不存在则添加(注意,添加的元素为不可变类型)

.update(iterable) 把可迭代对象的元素依次向集合中添加,如果集合中不存在则添加(注意,添加的元素为不可变类型)

2、删除元素:

随机删   .pop()   随机删除并返回删除的元素,如果集合中元素为空则抛出异常

指定删   .remove(val)删除指定的某个元素,如果不存在会报错

指定删   .discard(ele)  从集合中删除元素ele,如果不存在不会报错

清空      .clear()  清空集合

3、集合运算

交集&    两个集合中共有的部分

并集 |    包含两个集合所有元素

补集 -   补集是相对的,A对B取补集,意思就是取在集合A中不在集合B中的项,称为A相对B的补集

对称差集  ^ 取不在集合AB交集里的元素组成的集合称为对称差集,也叫反交集

 

字典:

利用集合元素不重复不可变的特性,是集合中的元素映射值组成键值对,在通过键来获取对应的值

因此字典中的建必须是不可变类型,且不会重复

1、增加/修改元素

用key赋值方式添加元素,如果存在key,则是修改,不存在的key会报错

dict.update(new_dict) 将new_dict合并进dict中

2、删除元素

dict.pop(key,[,d])  删除指定的key对应的值并返回该值,如果key不存在则返回d,如果没有给定d,删除不存在得key回报错

dict.popitem()  以LIFO后进先出方式删除字典中的一个键值对,并以二元元组(key,value)返回

3、查询元素

dict.get(key,default=None) 获取key对应的value,如果没有默认返回None

 

posted @ 2021-06-07 00:43  ~简~单~  阅读(84)  评论(0)    收藏  举报