set 集合 拷贝的操作
1 str中的join方法,把列表转换成字符串
s = "**".join(["哈哈", "嘻嘻", "哈哈"]) print(s)
2 列表和字典在循环的时候不能直接被删除
1 lst = ["紫云","大云","玉溪","紫砖","a","b"] lst.clear() 2 new_lst = [] for el in lst: new_lst.append(el) for el in new_lsts: lst.remove(el) print(lst) print(new_lst)
需要把要删除的内容记录到新列表中,然后循环新列表,删除字典或列表
lst = ["张国荣","张铁林","张国立","张曼玉","汪峰"] #删除姓张的 zhangs = [] for el in lst: if el.starswith(""张) zhangs.append(el) for el in zhangs: lst.remove(el) print(lst) print(zhangs)
dic = {"提莫":"冯提莫","发姐":"陈一发","55开":"卢本伟"} dic.clear() #直接删除 lst[] for k in dic : lst.append(k) for el in lst: dic.pop(el) print(dic) #综上述 列表和字典都不能在循环中进行删除,字典再循环的时候不予许改变大小
3 fromkeys()
dic ={"apple":"苹果","banana":"香蕉"} # 返回新字典,和原来的没有关系 ret = dic.fromkeys("orange","橘子") #直接用字典去访问fromkeys不会对字典产生任何影响 ret = dict.fromkeys("abc",["哈哈","呵呵","嘿嘿"] print(ret) #fromkeys 直接使用类名去访问
1 返回新字典 对原字典没有影响
2 后面的values 是多个key共享一个value
二 set集合
特点 :
无序 不重复 元素必须是哈希(不可变)
s = {"周杰伦","昆仑","坤琳",(1,2,3),"周杰伦"} lst = [11,22,33,55,6,7,88,9,10,11,22] s = set(list) #把列表转换成集合,进行去重复 lst = list(s) print(lst)
作用:
去重复
本身是可变的数据类型 有增删改查操作
s = {"刘嘉玲",关之琳","王祖贤"} s.update("马化腾") #迭代更新 print(s)
frozenset()冻结的集合,不可变的 可哈希的
三 深浅拷贝
1 赋值 没有创建新对象 公用一个对象
2 浅拷贝 拷贝第一层的内容 [:] 或 copy()
lst1 = ["金毛狮王", "紫衫龙王", "青翼蝠王", "白眉鹰王",["张无忌","赵敏","周芷若"]] lst2 = lst1[:] #浅拷贝 lst2 = lst1.copy() #浅拷贝 lst2 = copy.deepcopy(lst1) print(lst1) print(lst2) # 1 赋值操作 没有创建新对象 2 浅拷贝 只拷贝第一层内容 [:] copy() 3 深拷贝 把这个对象内容全部拷贝一份,引入copy模块 deepcopy()
3 深拷贝 拷贝所有内容 包括内部的所有