python中的join、set集合、深浅拷贝
一. join
1. str中的join方法. 把列表转换成字符串
2. 列表和字典在循环的时候不能直接删除.
需要把要删除的内容记录在新列表中.
然后循环新列表.删除字典或列表
s = "**".join(["高华新", "刘清扬", "崔园樟"]) print(s)
3. fromkeys()
1. 返回新字典. 对原字典没有影响
2. 后面的value.是多个key共享一个value
dic = {} dic = dic.fromkeys("asdf","aaaa") print(dic)
二. set集合
特点:无序, 不重复, 元素必须可哈希(不可变)
作用:去重复
本身是可变的数据类型. 有增删改查操作.
frozenset()冻结的集合. 不可变的. 可哈希的
s = {"周杰伦", "的老婆","叫昆凌", (1,2,3), "周杰伦"} lst = [11,5,4,1,2,5,4,1,25,2,1,4,5,5] s = set(lst) # 把列表转换成集合. 进行去重复 lst = list(s) # 把集合转换回列表. print(lst) # 集合本身是可变的数据类型, 不可哈希, 有增删改查操作 s = {"刘嘉玲", '关之琳', "王祖贤"} s.update("麻花藤") # 迭代更新 print(s)
三. 深浅拷贝(难点)
1. 赋值. 没有创建新对象. 公用同一个对象
2. 浅拷贝. 拷贝第一层内容. [:]或copy()
3. 深拷贝. 拷贝所有内容. 包括内部的所有.
# 引入copy模块 import copy lst1 = ["金毛狮王", "紫衫龙王", "青翼蝠王", "白眉鹰王",["张无忌","赵敏","周芷若"]] # lst2 = lst1[:] # 浅拷贝 # lst2 = lst1.copy() # 浅拷贝 lst2 = copy.deepcopy(lst1) # lst1[4].append("小昭") print(lst1) print(lst2) print(id(lst1[4])) print(id(lst2[4]))