小數據池: int -5~256 str 特殊字符,*數字20 ascii : 8位 1字節 表示1個字符 unicode 32位 4個字節 表示一個字符 utf- 8 1個英文 8位,1個字節 歐洲 16位 兩個字節 表示一個字符 亞洲 24位 三個字節 表示一個字符 gbk 1個英文 8位,1個字節 亞洲 16位 兩個字節 表示一個字符 s = 'alex' b = s.encode('utf-8') print(b) # b'alex' 1,基礎數據類型彙總補充 str int list 在循環一個列表時,最好不要刪除列表中的元素,這樣會使索引起生改變,從而報錯。 bool dict 1,fromkeys() tuple 2,集合set 3,深淺copy
字符串 列表app
#str print(''.isspace()) #list lis=[11,22,33,44,55] for i in range(len(lis)): print(i,lis[i]) ###i=lis的索引值 # del lis[i] #循環列表時刪除元素時 索引值會改變,從而報錯 1[22, 44, 55]2[22, 44]3 <<< False 0 11 1 22 2 33 3 44 4 55
lis=[11,22,33,44,55] # 打印出lis中的奇數的三種方法: # 第一種 #按切片取值 lis=lis[::2] print("\n") print(lis) # 第二種 添加到一個新列表裏面 lis=[11,22,33,44,55] li=[] for i in lis: #i是list裏面的元素 注意和range區分 if lis.index(i)%2!=1: li.append(i) lis=li print(lis) # 第三種 #反向刪除列表中的元素 lis=[11,22,33,44,55] for i in range(len(lis)-1,-1,-1): #刪除列表的元素要想索引值不改變 能夠反向刪除 # for i in range(len(lis)): if i%2==1: # print(i) del lis[i] # print(lis) print(lis) <<< [11, 33, 55] [11, 33, 55] [11, 33, 55]
字典spa
# dic dic=dict.fromkeys(range(1,4),"春哥") #keys必須是可迭代對象(序列) eg:字符串 列表 元祖 range print(dic) dic=dict.fromkeys(range(1,4),[]) dic[1].append("園姐") #只有列表有append的方法 print(dic) dic[2].append("二哥") print(dic) #循環時不能刪除字典 會報錯 1 #建立一個空字典 dic={'k1':"v1",'k2':"v2","a3":"v3"} dic1={} for i in dic: if "k" in i: dic1.setdefault(i,dic[i]) dic=dic1 print(dic) # 2把字典中的元素放到一個空列表 再對空列表循環 dic={'k1':"v1",'k2':"v2","a3":"v3"} l=[] for i in dic: if "k" not in i: l.append(i) for i in l: del dic[i] print(dic) <<< {1: '春哥', 2: '春哥', 3: '春哥'} {1: ['園姐'], 2: ['園姐'], 3: ['園姐']} {1: ['園姐', '二哥'], 2: ['園姐', '二哥'], 3: ['園姐', '二哥']} {'k1': 'v1', 'k2': 'v2'} {'k1': 'v1', 'k2': 'v2'}
元祖code
tu1=([1],) tu2=([1]) print(tu1,tu2,type(tu1),type(tu2)) <<< ([1],) [1] <class 'tuple'> <class 'list'>
集合對象
#集合:可變的數據類型,它裏面的元素必須是不可變的數據類型,無序,不重複 set1={'alex','wusir','ritian','egon','barry'} set2=set({1,2,3}) print(set1,set2,type(set1),type(set2)) #增 set1.add('女神') set1.update('abc') print(set1) #刪 set2={'alex','wusir','ritian','egon','barry'} print(set2.pop())#隨機刪除 有返回值 print(set2) print(set2.remove('alex')) #按元素刪除 返回None print(set2) print(set2.clear()) #清空clear 返回None,清空完原集合成爲空集 set() 不是{}(與字典區分) print(set2) del set2 #刪除集合 #查 set3={'alex','wusir','ritian','egon','barry'} for i in set3: #無序返回集合的每個元素 print(i) #集合的交併 set1={1,2,3,4,5} set2={4,5,6,7,8} print(set1 & set2) #交集 print(set1.intersection(set2)) print(set1 | set2) #並集 print(set1.union(set2)) print(set1^set2) #反交集 並集減去交集 print(set1.symmetric_difference(set2)) print(set1-set2) #set1獨有的 print(set1.difference(set2)) #比較集合 set1={1,2,3} set2={1,2,3,4,5,6} print(set1<set2) print(set1.issubset(set2)) #set1是set2的子集 print(set2>set1) print(set2.issuperset(set1)) #集合set2是1的超集 #去重 li=[1,2,33,33,4,6,6,8,8,9,9,9] set4=set(li) #把列表轉換成集合 print(set4) li=list(set4) print(li) s=frozenset('barry') # frozenset() 返回一個凍結的集合,凍結後集合不能再添加或刪除任何元素。 for i in s: #沒有add,pop等操做 print(i) <<< {'ritian', 'barry', 'alex', 'wusir', 'egon'} {1, 2, 3} <class 'set'> <class 'set'> {'ritian', 'barry', 'alex', '女神', 'c', 'a', 'wusir', 'egon', 'b'} ritian {'barry', 'alex', 'wusir', 'egon'} None {'barry', 'wusir', 'egon'} None set() ritian barry alex wusir egon {4, 5} {4, 5} {1, 2, 3, 4, 5, 6, 7, 8} {1, 2, 3, 4, 5, 6, 7, 8} {1, 2, 3, 6, 7, 8} {1, 2, 3, 6, 7, 8} {1, 2, 3} {1, 2, 3} True True True True {1, 2, 33, 4, 6, 8, 9} [1, 2, 33, 4, 6, 8, 9] b y r a
深淺copyblog
'''直接賦值:其實就是對象的引用(別名)。 淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象。 深拷貝(deepcopy): copy 模塊的 deepcopy 方法,徹底拷貝了父對象及其子對象。''' #深淺copy #賦值 l1=[] l2=l1 l3=l1 l3.append("a") print(l1,l2,l3,id(l1),id(l2),id(l3)) #copy 淺拷貝 l1=[1,2,[4,5,6],3] l2=l1.copy() print(l1,l2,id(l1),id(l2)) l1.append('a') print(l1,l2,id(l1),id(l2)) #第一層地址不相同 第一層l2不會隨l1改變 l1[2].append('a') print(l1,l2,id(l1),id(l2)) print(id(l1[2]),id(l2[2])) #重點 第二層地址及以上地址相同 import copy l1=[1,2,[4,5,6],3] l2=copy.deepcopy(l1) print(l1,l2,id(l1),id(l2)) l1[2].append('a') print(l1,l2,id(l1),id(l2)) print(id(l1[2]),id(l2[2])) #深拷貝與淺拷貝的區別是 無論多少層 倆個列表徹底獨立 l1=[1,[1],2,3,4] l2=l1[:] #也是淺拷貝 至關於l2=l1.copy() print(l1,l2,id(l1),id(l2)) l1[1].append('a') print(l1,l2,id(l1[1]),id(l2[1]))
<<< ['a'] ['a'] ['a'] 1927665312328 1927665312328 1927665312328 [1, 2, [4, 5, 6], 3] [1, 2, [4, 5, 6], 3] 1927696924744 1927696884808 [1, 2, [4, 5, 6], 3, 'a'] [1, 2, [4, 5, 6], 3] 1927696924744 1927696884808 [1, 2, [4, 5, 6, 'a'], 3, 'a'] [1, 2, [4, 5, 6, 'a'], 3] 1927696924744 1927696884808 1927697092360 1927697092360 [1, 2, [4, 5, 6], 3] [1, 2, [4, 5, 6], 3] 1927697037384 1927696924744 [1, 2, [4, 5, 6, 'a'], 3] [1, 2, [4, 5, 6], 3] 1927697037384 1927696924744 1927697038792 1927697037192 [1, [1], 2, 3, 4] [1, [1], 2, 3, 4] 1927697092360 1927697037384 [1, [1, 'a'], 2, 3, 4] [1, [1, 'a'], 2, 3, 4] 1927696884808 1927696884808
l1=['alex','taibai','wusir','egon'] for i in l1: print(l1.index(i),i) for index,i in enumerate(l1,1): print(index,i) <<< 0 alex 1 taibai 2 wusir 3 egon 1 alex 2 taibai 3 wusir 4 egon
直接賦值:其實就是對象的引用(別名)。索引
淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象。utf-8
深拷貝(deepcopy): copy 模塊的 deepcopy 方法,徹底拷貝了父對象及其子對象。ci