將列表轉換成字符串,每一個元素間用"內容"拼接,安全
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 是兩個不一樣內存地址的