将列表转换成字符串,每一个元素间用"内容"拼接,安全
s = ["高华新","刘清扬","崔园樟"] s1 = "-".join(s) print(s1) >>> 高华新-刘清扬-崔园樟
ss = "高华新**刘清扬**崔园樟" print(ss.split("**")) >>> ['高华新', '刘清扬', '崔园樟']
列表和字典在循环的时候不能直接删除,须要把删除的内容放在一个新列表中,而后再循环新列表,再删除字典和列表中所对应的内容app
列表的直接remove删除:spa
lst = ["紫云", "大云", "玉溪", "紫钻","a","b"] for el in lst: # 有一个变量来记录当前循环的位置 lst.remove(el) print(lst) >>> ['大云', '紫钻', 'b'] #删除的时候, 发现. 剩余了一下内容. 缘由是内部的索引在改变. # # 须要把要删除的内容记录下来. 而后循环这个记录. 删除原来的列表
建立新列表删除code
lst = ["紫云", "大云", "玉溪", "紫钻","a","b"] li = [] for i in lst: # 遍历列表中的元素 li.append(i) #将将删除的元素添加到新列表中 for i in li: #遍历新列表中的元素 lst.remove(i) #旧列表删除内容,由于遍历的是新列表中的元素,因此原来的列表元素位置就不会自动往前走,不会内部循环 # 是最安全的 print(lst) >>> [] # 空列表
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开":"卢本伟"} lst = [] for i in dic: lst.append(i) for i in lst: dic.pop(i) print(dic) >>> {}
直接用类(class)访问,返回新字典,对原字典没有影响orm
后面的value是多个key共享一个value对象
dic = {"apple":"苹果", "banana":"香蕉"} print(dic.fromkeys("apple","苹果")) >>> {'a': '苹果', 'p': '苹果', 'l': '苹果', 'e': '苹果'} #造成新字典,与原字典无关联,遍历前面造成key,共享后面一个value print(dic.fromkeys("ab",["苹果","橘子"])) >>> {'a': ['苹果', '橘子'], 'b': ['苹果', '橘子']}
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': ['哈哈', '呵呵', '吼吼', '嘻嘻']}
特色:无顺序,不重复,里面元素是可哈希(不可变)的blog
做用:用来去重索引
自己是可变的数据类型,有增删改查操做内存
frozenset()冻结的集合. 不可变的. 可哈希的,冻结后集合不能再添加或删除任何元素。rem
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) >>> [1, 2, 4, 5, 11, 25] #去重 # 集合自己是可变的数据类型, 不可哈希, 有增删改查操做 s = {"刘嘉玲", '关之琳', "王祖贤"} s.update("麻花藤") # 迭代更新 无序 print(s) >>> {'王祖贤', '关之琳', '藤', '花', '刘嘉玲', '麻'}
赋值, 没有建立新对象. 共用同一个对象,他们是相同的,赋值后的变量指向原有的内存地址
拷贝第一层内容.不拷贝内部子对象,用 [:]或copy()
lst1 = ["金毛狮王", "紫衫龙王", "青翼蝠王", "白眉鹰王",["张无忌","赵敏","周芷若"]] print(lst1.copy()) #浅拷贝 拷贝出来的列表第一层与原来是不一样的内存地址,第二层指向原来的地址 >>> ['金毛狮王', '紫衫龙王', '青翼蝠王', '白眉鹰王', ['张无忌', '赵敏', '周芷若']] print(lst1[:]) #浅拷贝 >>> ['金毛狮王', '紫衫龙王', '青翼蝠王', '白眉鹰王', ['张无忌', '赵敏', '周芷若']]
拷贝全部内容. 包括内部的全部,造成一个新的对象,虽然与以前的值和内容如出一辙,可是它们完彻底全的两个对象,用deepcopy()
lst1 = ["金毛狮王", "紫衫龙王", "青翼蝠王", "白眉鹰王",["张无忌","赵敏","周芷若"]] lst2 = copy.deepcopy(lst1) print(lst2) >>> ["金毛狮王", "紫衫龙王", "青翼蝠王", "白眉鹰王",["张无忌","赵敏","周芷若"]] print(id(lst1)) >>> 358961124936 print(id(lst2)) >>> 358961315656 # lst1和lst2 是两个不一样内存地址的