dict: dic = {'name':'alex'} 增:dic['age'] = 21 存在就覆蓋 dic.setdefault() 沒有就增長 刪除:pop()按照key刪除,有返回值 clear del dic['name'] popitem()隨機刪除 返回的是元祖 改 update 查 dic.keys() dic.values() dic.items() for k,v in dic.items(): print(k,v) dic.get(key,None)
# 將全部大於66的值保存到字典的第一個key中,將全部小於66的保存到字典的第二個key中 # 即:{"k1":大於66的全部值的列表,'k2':小於66的全部值的列表} li=[11,22,33,44,55,66,77,88,90] k1=[] #建立一個保存大於66的值空列表 k2=[] dic={} for i in li: if i == 66: continue if i>66: k1.append(i) else: k2.append(i) dic["k1"]=k1 dic["k2"]=k2 print(dic) <<< {'k1': [77, 88, 90], 'k2': [11, 22, 33, 44, 55]}
"""輸出商品列表,用戶輸入序號,顯示用戶選擇的商品。 商品li=["手機","電腦","鼠標墊","遊艇"] 要求:1.頁面顯示序號加商品名稱 如:1 手機 2.用戶輸入選擇的商品序號,而後打印商品名稱 3.若是用戶輸入的商品序號有誤,提示輸入有誤,並從新輸入 4.用戶輸入q或者Q退出程序 """ flag = True while flag: li=["手機","電腦","鼠標墊","遊艇"] for i in li: # print("%s,\t%s" %(li.index(i)+1,i)) print("{},\t{}".format(li.index(i)+1,i)) a=input("請輸入商品序號:") if a.isdigit(): if int(a)>0 and int(a)<len(li): print(li[int(a) - 1]) else: print("請從新輸入") elif a.upper()=='Q': break else: print("請輸入正確的數字") <<< 1, 手機 2, 電腦 3, 鼠標墊 4, 遊艇 請輸入商品序號:1 手機 1, 手機 2, 電腦 3, 鼠標墊 4, 遊艇 請輸入商品序號:
python2 python3 ''' #python2 #print() print 'abc' #range() xrange() 生成器 # raw_input() #python3 #print('abc') #range() # input()
li1 = [1,2,3] li2 = li1 li3 = li2 print(id(li1),id(li2))
代碼塊的緩存機制的適用範圍: int(float),str,bool。python
int(float):任何數字在同一代碼塊下都會複用。git
bool:True和False在字典中會以1,0方式存在,而且複用。緩存
大前提:小數據池也是隻針對 int(float),str,bool。app
小數據池是針對不一樣代碼塊之間的緩存機制!!!函數
代碼塊:一個模塊,一個函數,一個類,一個文件等都是一個代碼塊。編碼
而做爲交互方式輸入的每一個命令都是一個代碼塊spa
若是在同一代碼塊下,則採用同一代碼塊下的緩存機制。code
若是是不一樣代碼塊,則採用小數據池的駐留機制orm
#數字,字符串 小數據池 #數字的範圍 -5 -- 256 #字符串:1,不能有特殊字符 # 2,s*20 仍是同一個地址,s*21之後都是兩個地址 i1 = 6 i2 = 6 print(id(i1),id(i2)) i1 = 300 i2 = 300 print(id(i1),id(i2)) <<< 1711899107912 1711899107912 140723552564208 140723552564208 1711899334704 1711899334704
# 剩下的 list dict tuple set l1 = [1,] l2 = [1,] print(l1 is l2) s = '中國' print(s,type(s)) s1 = '中國' s1=s1.encode() print(s1,type(s1)) s1 = 'alex' # encode 編碼,如何將str --> bytes, () s11 = s1.encode('utf-8') s12 = s1.encode('gbk') print(s11) s2 = '中國' s22 = s2.encode('utf-8') s23 = s2.encode('gbk') print(s22) <<< False 中國 <class 'str'> b'\xe4\xb8\xad\xe5\x9b\xbd' <class 'bytes'> b'alex' b'\xe4\xb8\xad\xe5\x9b\xbd'
ascii A : 00000010 8位 一個字節 unicode A : 00000000 00000001 00000010 00000100 32位 四個字節 中:00000000 00000001 00000010 00000110 32位 四個字節 utf-8 A : 00100000 8位 一個字節 中 : 00000001 00000010 00000110 24位 三個字節 gbk A : 00000110 8位 一個字節 中 : 00000010 00000110 16位 兩個字節 1,各個編碼之間的二進制,是不能互相識別的,會產生亂碼。 2,文件的儲存,傳輸,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等) py3: str 在內存中是用unicode編碼。 bytes類型 對於英文: str :表現形式:s = 'alex' 編碼方式: 010101010 unicode bytes :表現形式:s = b'alex' 編碼方式: 000101010 utf-8 gbk。。。。 對於中文: str :表現形式:s = '中國' 編碼方式: 010101010 unicode bytes :表現形式:s = b'x\e91\e91\e01\e21\e31\e32' 編碼方式: 000101010 utf-8 gbk。。。。