str中的join方法; set集合;深浅拷贝
一.str中的join方法
1,用join可以吧列表转换为字符串
将列表转换成字符串. 每个元素之间用_拼接
s = "_". join(['德玛', ''赵信'', '易']) print(s) # ''德玛_赵信_易''
字符串转换成列表: split()
把列表转换成字符串: join()
只要是可迭代对像就可以用join
lst = ["紫云", "大云", "玉溪", "紫钻","a","b"] lst.clear() print(lst) # ['大云', '紫钻', 'b'] # # 删除的时候, 发现. 剩余了一下内容. 原因是内部的索引在改变. # # 需要把要删除的内容记录下来. 然后循环这个记录. 删除原来的列表 new_lst = [] # 准备要删除的信息 for el in lst: # 有一个变量来记录当前循环的位置 new_lst.append(el) # 循环新列表, 删除老列表 for el in new_lst: lst.remove(el) print(lst)
list和dict在循环的时候不能直接删除,循环的时候会改变索引删不干净.
lst = ['张国荣', '张铁林', '张国立', '张曼玉', '汪峰'] #删掉姓张的 #记录姓张的 zhangs = [] for el in lst: if el.startswith('张'): 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)
综上. 列表和字典都不能再循环的时候进行删除. 字典在循环的时候不允许改变大小
二.fromkeys :
描述
Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
语法
fromkeys()方法语法:
dict.fromkeys(seq[, value])
示例:
dic = {"apple":"苹果", "banana":"香蕉"} # 返回新字典. 和原来的没关系 # ret = dic.fromkeys("orange", "橘子") # 直接用字典去访问fromkeys不会对字典产生影响 ret = dict.fromkeys("abc",["哈哈","呵呵", "吼吼"]) # fromkeys直接使用类名进行访问 print(ret) # {'a': ['哈哈', '呵呵', '吼吼'], 'b': ['哈哈', '呵呵', '吼吼'], 'c': ['哈哈', '呵呵', '吼吼']} a = ["哈哈","呵呵", "吼吼"] ret = dict.fromkeys("abc", a) # fromkeys直接使用类名进行访问 a.append("嘻嘻") print(ret) # {'a': ['哈哈', '呵呵', '吼吼', '嘻嘻'], 'b': ['哈哈', '呵呵', '吼吼', '嘻嘻'], 'c': ['哈哈', '呵呵', '吼吼', '嘻嘻']}
三,集合
特点:
无序, 不重复, 元素必须可哈希(不可变)
作用:
去重复
本身是可变的数据类型. 有增删改查操作.
frozenset()冻结的集合. 不可变的. 可哈希的
# 集合本身是可变的数据类型, 不可哈希, 有增删改查操作 s = {"刘嘉玲", '关之琳', "王祖贤"} s.update("麻花藤") # 迭代更新 print(s) # 集合中的元素必须是可哈希的. 不重复的. 可以去重. 哈希hash算法
四, 深浅拷贝
1. 赋值. 没有创建新对象. 公用同一个对象
2. 浅拷贝. 拷贝第一层内容. [:]或copy()
3. 深拷贝. 拷贝所有内. 包括内部的所有.把这个对象内部的内容全部拷贝一份. 引入copy模块. deepcopy()