2019-09-17-23:09:48
今天學的內容是有關小數據池的,學的有點懵逼,感覺越來越難學了,但是得堅持下去
明天學習下一個課程時,感覺要跟不上,看來明天得先看好幾遍今天的內容
不然肯定會聽的懵逼
今天看見嗶哩嗶哩很多這樣的視頻,內容和我網上買的一樣的,心塞啊!!!!!!!!!!!!
今天的內容:
一.重要知識點
1. is 和 == 區別
id()函數
== 判斷兩邊的值
is 判斷內存地址
#小數據池只針對整數、字符串、布爾值.其他的數據類型不存在駐留機制
2.當我們在控制臺的時候,代碼塊與代碼塊之間的規則:
1.數字: -5~256之向的整數會被緩存
2.宇符串:
長度小于等于1會默認緩存
長度大于1,如果字符串中只有數字、字母、下換線緩存
乘法得到的字符串:
1.如果乘數是1. 和上面兩個方案一致
2.乘數不是1.最終長度不能超過20
手動指定緩存 from sys import intern intern()制定緩存的內容
3.布爾值
3.py文件里, 一個代碼塊內部,只會緩存int, str, bool 也有自己的小數據池。 緩存的范圍會比外面的代碼塊的數據池大
1. 數字。都會緩存。運算的結果不緩存(-5~256 會緩存)
2. 宇符串。默認的字符串都緩存,如果有乘法。 遵循上方的結論
3. 布爾值,默認緩存
回顧編碼:
1. ASCII: 英文, 特殊字符, 數字, 8bit, 1byte
2. GBK: 中文 16bit, 2byte. 兼容ASCII
3. unicode: 萬國碼, 32bit 4byte. 兼容ASCII
4. UTF-8: 長度可變的unicode. 英文:8bit, 歐洲:16bit, 中文:24bit 3byte
python2 只能用ASCII
python3 有unicode, 默認的編碼就是unicode
內存里用的是unicode. 硬盤和網絡傳輸用的是utf-8或者GBK
2. encode() 編碼. 獲取到的是編碼之后的結果. bytes
3. decode() 解碼. 把bytes編程我們熟悉的字符串
二.錯誤總結
1.字符串的錯誤
li=[11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
dict={}
for el in li:
if el<=66:
if dict.get('k1')==None:
dict['k1']=el #-->>這里是表示字符串(應該加上[])
else:
dict['k1'].append(el) #-->>字符串不可改變
else:
if dict.get('k2')==None:
dict['k2']=el #-->>這里是表示字符串
else:
dict['k2'].append(el) #-->>字符串不可改變
print(dict)
#出現這個錯誤的原因是因為沒有考慮到字符串是不可變的,沒有連貫上以前學的內容,只以為今天的題目昨天的內容就可以解決
解決方法:加上[],以后每輸入一個命令行,要去考慮它是什么
2.同上
s="k:1|k1:2|k2:3|k3:4"
lst=[]
lst=s.split("|")
# print(lst)
dict={}
for c in lst:
# print(c)
k,v=c.split(":") #-->>這里一開始自己做沒有加上k,v
dict[k]=int(v)
print(dict)
#還是一樣沒有考慮到字符串的不可變
解決方法:重新回去再仔細看看前幾天所學的內容,要學會連貫知識點
覺得還可以的代碼
li=[11, 22, 33, 44, 55, 66, 77, 88, 99, 90
]
dict
=
{}
for
el
in
li:
if
el<=66
:
if
dict.get(
'
k1
'
)==
None:
dict[
'
k1
'
]=
[el]
else
:
dict[
'
k1
'
].append(el)
else
:
if
dict.get(
'
k2
'
)==
None:
dict[
'
k2
'
]=
[el]
else
:
dict[
'
k2
'
].append(el)
print
(dict)
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
