set集合,深浅拷⻉贝以及部分知识点补充
一. 基础数据类型补充.
join() 把列表中的每一项用字符串拼接起来
split() 相反
1. 关于删除(重点).
1. 循环迭代过程中不能删除.
2. 创建新列表, 把要删除的内容保存在新列表中, 循环新列表, 删除老列表.
3. 字典在循环的时候可以修改, 但不能新增和删除.
2. dict中的fromkey(), 可以帮我们通过list来创建一个dict.
dict.fromkeys(k, v)
把key迭代, 和value组合成k:v创建新字典, 所有的key共享同一个value.
3. 类型转换:
元组 => 列列表 list(tuple).
列表 => 元组 tuple(list).
list=>str str.join(list).
str=>list str.split().
二. set集合.
集合是无序的, 不重复的数据集合, 它里面的元素是可哈希的(不可变类型), 但是集合本身是不可哈希(所以集合做不了字典的键)的.
lst = []
list(set(lst)) # 去重复.
1. 增加
s. add() # 重复的内容不会被添加到set集合中.
s. update() # 迭代更新.
2. 删除
s. pop() # 随机弹出一个.
s. remove() # 直接删除元素, 如果不存在这个元素. 删除会报错.
s. clear() # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set(), 因为要和dict区分.
3 修改
set集合中的数据没有索引. 也没有办法去定位一个元素. 所以没有办法进行直接修改.
我们可以采用先删除后添加的方式来完成修改操作.
s. remove()
s. add()
4. 查询
set是一个可迭代对象. 所以可以进行for循环.
5. 常用操作
交集, 并集, 差集, 反交集, 子集, 超集.
set集合本身是可以发生改变的. 是不可hash的. 我们可以使用frozenset来保存数据.
frozenset是不可变的. 也就是一个可哈希的数据类型.
三. 深浅拷贝
1. 赋值. 不会产生新对象, 和拷贝没关系.
2. 浅拷贝. 只会复制自身, 会创建对象.
3. 深拷贝. 把内部所有的内容都进行拷贝.