1.str中的join算法,將列表轉換成字符串,並用'_'(或其餘)算法
1 li=['李嘉誠','馬化騰','劉嘉玲','黃海峯',] 2 s='_'.join(li) 3 print(s) #李嘉誠_馬化騰_劉嘉玲_黃海峯
2.循環刪除列表中的每一個元素app
li=['李嘉誠','馬化騰','劉嘉玲','黃海峯',] for el in li: li.remove(el) print(li) #['馬化騰', '黃海峯']
緣由分析:for循環在運行過程當中會有一個指針記錄當前循環的元素是哪個.spa
方法一:指針
1 li=['李嘉誠','馬化騰','劉嘉玲','黃海峯',] 2 for i in range(0,len(li)): 3 li.pop() #括號中什麼也不寫,默認刪除最後一個
4 print(li) #[]
方法二:刪除元素會致使列表中元素的索引起生改變,因此容易出現問題.code
1 li=['李嘉誠','馬化騰','劉嘉玲','黃海峯',] 2 del_li=[] 3 for el in li: 4 del_li.append(el) #用另外一個列表來記錄我要刪除的內容
5 for el in del_li: #循環另外一個列表
6 li.remove(el) #把原列表中的每個元素對應刪除
7 print(li) #[]
字典也是如此:對象
1 dic = {"提莫":"馮提莫", "髮姐":"陳一發兒", "55開":"盧本偉"} 2 lis=[] 3 for el in dic: 4 lis.append(el) 5 for el in lis: 6 dic.pop(el) 7 print(dic) #{}
3.dict中的元素在迭代的過程當中是不容許進行刪除的,要想刪除,就要把想刪除的元素暫時保存在一個list中,在循環list刪除.blog
1 dic = {"提莫":"馮提莫", "髮姐":"陳一發兒", "55開":"盧本偉"} 2 lis=[] 3 for el in dic: 4 if el.startswith('提'): 5 lis.append(el) 6 for el in lis: 7 dic.pop(el) 8 print(dic) #{'髮姐': '陳一發兒', '55開': '盧本偉'}
4.dict中的dict.fromkeys(),能夠幫助咱們經過list建立一個dict索引
1 a','b'],['c','d'])
2 print(dic) #{'a': ['c', 'd'], 'b': ['c', 'd']} 前面的迭代被做爲字典的鍵,後面的被做爲字典的value
5.字符串和列表的相互轉換rem
把字符串轉換成列表:split()字符串
把列表轉換成字符串:join()
特色:set中的元素是無序的,不重複的,裏面的元素必須是可hash的(int,str,tuple,bool),set就是字典類型的數據,可是不保存value.set用{}表示.
注意:set集合中的元素必須是可hash的,可是set自己是不可hash的.
不可重複,無序(通常用來去重):
1 s={'1','2','2'} 2 print(s) #第一次運行{'1', '2'} 第二次運行{'2', '1'}
1.增
(1) s.add():
1 s={'劉嘉玲','張曼玉','王祖賢'} 2 s.add('美麗的我') 3 s.add('王祖賢') #重複的內容不會添加到set中
4 print(s) #{'劉嘉玲', '美麗的我', '王祖賢', '張曼玉'}
(2) s.update():
1 s={'劉嘉玲','張曼玉','王祖賢'} 2 s.update('馬化騰') #迭代添加
3 print(s) #{'化', '劉嘉玲', '張曼玉', '騰', '王祖賢', '馬'}
2.刪
(1) s.pop()
1 s={'劉嘉玲','張曼玉','王祖賢'} 2 # a=s.pop() #隨機刪除一個
3 # print(a)
4 # print(s)
(2) s.remove()
1 s={'劉嘉玲','張曼玉','王祖賢'} 2 # s.remove('劉嘉玲') #直接刪除指定元素,若是不存在會報錯
3 # print(s)
(3) s.clear()
1 s={'劉嘉玲','張曼玉','王祖賢'} 2 s.clear() 3 print(s) #set()
3.改
set中的數據沒有索引,因此沒有辦法定位一個元素,所以沒有辦法進行直接修改.
咱們能夠採用先刪除後添加的方式進行修改
#把劉嘉玲改爲趙本山
s={'劉嘉玲','張曼玉','王祖賢'} s.remove('劉嘉玲') #刪除
s.add('趙本山') #添加
print(s) #{'趙本山', '張曼玉', '王祖賢'}
4.查
用for循環進行查看
1 s={'劉嘉玲','張曼玉','王祖賢'} 2 for el in s: #王祖賢
3 print(el) #劉嘉玲
4 #張曼玉
5.經常使用操做
1 s1={'劉能','趙四','皮長山'} 2 s2={'劉科長','馮科長','皮長山'} 3 print(s1 & s2) #交集
4 print(s1.intersection(s2)) #交集
5
6 print(s1 | s2) #並集
7 print(s1.union(s2)) #並集
8
9 print(s1 - s2) #差集
10 print(s1.difference(s2)) #差集
11
12 print(s1 ^ s2) #反差集
13 print(s1.symmetric_difference(s2)) #反差集
14
15 print(s1 < s2) #子集
16 print(s1.issubset(s2)) #子集
17
18 print(s1 > s2) #超集
19 print(s1.issuperset(s2)) #超集
1. 賦值. 沒有建立新對象. 公用同一個對象
2. 淺拷貝. 拷貝第一層內容. [:]或copy()
1 lst1=['何炅','杜海濤','謝娜',['李維嘉']] 2 lst2=lst1.copy()
print(lst1) #2571062967176
print(lst2) #2571062967176
3 print(id(lst1[3])) #2449591204744 4 print(id(lst2[3])) #2449591204744
3. 深拷貝. 拷貝全部內容. 包括內部的全部.
1 import copy 2 lst1=['何炅','杜海濤','謝娜',['李維嘉']] 3 lst2=copy.deepcopy(lst1) 4 print(lst1) 5 print(lst2) 6 print(id(lst1),id(lst2)) #3135828524616 3135828628360