字符串中的join方法
將列表轉換成字符串,每個元素間用"內容"拼接,
join(可迭代對象)
s = ["高華新","劉清揚","崔園樟"] s1 = "-".join(s) print(s1) >>> 高華新-劉清揚-崔園樟
split() 字符串轉換成列表
ss = "高華新**劉清揚**崔園樟" print(ss.split("**")) >>> ['高華新', '劉清揚', '崔園樟']
列表和字典在循環的時候不能直接刪除,需要把刪除的內容放在一個新列表中,然后再循環新列表,再刪除字典和列表中所對應的內容
列表的直接remove刪除:
lst = ["紫雲", "大雲", "玉溪", "紫鑽","a","b"] for el in lst: # 有一個變量來記錄當前循環的位置 lst.remove(el) print(lst) >>> ['大雲', '紫鑽', 'b'] #刪除的時候, 發現. 剩余了一下內容. 原因是內部的索引在改變. # # 需要把要刪除的內容記錄下來. 然后循環這個記錄. 刪除原來的列表
創建新列表刪除
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) >>> {}
formkeys()
直接用類(class)訪問,返回新字典,對原字典沒有影響
后面的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': ['哈哈', '呵呵', '吼吼', '嘻嘻']}
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) >>> [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 是兩個不同內存地址的