標籤:而不是 image 移動 特殊 print als 集合 list false
is 和 == 的區別:
is比較的兩端的記憶體位址
== 比較的是兩端的值
小資料池的概念:
把我們通常使用過的值儲存在小資料池中,供其它的變數使用,小資料池給數字和字串使用,其他資料類型不存在
小資料池給數字和字串使用
對於字串:
1. 如果是純文字資訊和底線,那麼這個對象會被添加到小資料池
2. 如果是帶有特殊字元的,那麼不會被添加到小資料池,每次都是新的
3 .如果是單一字母*n 的情況 . ‘a‘*20, 在20個單位就不會添加到小資料池中
注意: 在py檔案中,如果你只是單純的滴定儀一個字串,那麼一般情況下都是會被添加到小資料池中的,我們可以這樣認為,在使用字串的時候,python會幫我們把字串進行緩衝,在下次使用的時候直接指向這個字元即可,可以節省很多記憶體
is 比較的就是id()計算出來的結果, is比較的就是資料的記憶體位址
== 雙登表示的是判斷是否相等,注意沒這個雙登比較的是具體的值,而不是記憶體位址
bytes的表現形式:
1. 英?文 b‘alex‘ 英?文的表現形式和字串串沒什什麼兩樣
2. 中?文 b‘\xe4\xb8\xad‘ 這是?一個漢字的UTF-8的bytes表現形式
s = "alex"
print(s.encode("utf-8")) # 將字串串編碼成UTF-8
print(s.encode("GBK")) # 將字串串編碼成GBK
結果:
b‘alex‘
b‘alex‘
s = "中"
print(s.encode("UTF-8")) # 中?文編碼成UTF-8
print(s.encode("GBK")) # 中?文編碼成GBK
結果:
b‘\xe4\xb8\xad‘
b‘\xd6\xd0‘
記住: 英?文編碼之後的結果和源字串串?一致. 中?文編碼之後的結果根據編碼的不同. 編碼結果
也不同. 我們能看到. ?一個中?文的UTF-8編碼是3個位元組. ?一個GBK的中?文編碼是2個位元組.
基礎資料類型補充
join ------------------->
li = ["李李嘉誠", "麻花藤", "?黃海?峰", "劉嘉玲"]
s = "_".join(li)
print(s)
迴圈刪除列表中的元素:------------------>會刪不乾淨
這是因為for的運行過程,會有一個指標來記錄當前迴圈的元素是哪一個,一開始這個指標指向第0個,然後擷取到0個,然後刪除,這個時候,原來是第一個的元素會自動變成第0個,然後指標向後移動一次,指向1元素,這時原來的1已經變成了0 ,也就不會被刪除了
?用另?一個列列表來記錄你要刪除的內容. 然後迴圈刪除
li = [11, 22, 33, 44]
del_li = []
for e in li:
del_li.append(e)
for e in del_li:
li.remove(e)
print(li)
注意: 由於刪除元素會導致元素的索引發生改變,所以容易出現問題,盡量不要再迴圈中直接去刪除元素,可以把要刪除的元素添加到另一個集合中然後大量刪除
dict中的fromkey(),可以幫我們通過list來建立一個dict
前?面列列表中的每?一項都會作為key, 後?面列列表中的內容作為value. ?產生dict
好了了. 注意:
代碼中只是更改了jay那個列表,但是由於jay和JJ用的是同一個列表,所以前面那個改了,後面那個也會跟著改
dict中的元素在迭代過程中是不允許進行刪除的
那怎麼辦呢? 把藥刪除的元素暫時先儲存在一個list中,然後迴圈list,再刪除
類型轉換:
元組==>列表 list(tuple)
列表==>元組 tuple(list)
list==> str str.join(list)
str ==> list str.split()
轉換成False的資料:
0,‘‘,None,[],(),{},set() ==>False
換言之,凡是一切能代表空的,無的都是False
python編碼以及深淺拷貝