-
re模組
import re 不需冒號
re.sub("條件","填充物",L) 符合條件就替換成填充物 可以處理多條件
re.split("條件",L) 以條件分割 可以處理多條件
-
容器
List[] 可變更、可重複、有序
Tuple() 不可變更、可重複、有序
Set{} 可變更、不可重複、無序
S.add(新生成元素)
S&T 交集
S|T 聯集
S-T 差集
Dict{} 可變更、不可重複、有序或無序
可以用來強制轉型
所以說有沒有 不可變更、不可重複、無序 的東西= =
-
二維串列
L=[ [ j for j in 條件] for i in 條件]
-
while 條件 : 需要冒號
break
continue
-
字典
D={key1:value1 , key2:value2 , ...} 可以用for來做
使用{}包資料 所以跟set一樣key值不能重複
D.keys() 傳回所有key
D.values() 傳回所有value
D.items() 傳回所有key,value (若使用for 要使用兩個變數接收值)
D[newkey]=newvalue 新增項目到字典
del D[thatkey] 刪除指定項目
D.pop(thatkey) 刪除指定項目 (有回傳值) ex. x=D.pop('王五')
D.get(thatkey,查不到要顯示的字(預設顯示None)) 傳出對應value
D[thatkey] 如果thatkey不在字典中會出錯
製作字典,計算各單字數量:
S="I am vary happy. I learn Python today. I am a learner. Although today is holiday, I still work."
import re
L=re.sub("\,|\.","",S).split() 清除非英文字元資料 並分割單字
D={i:L.count(i) for i in list(set(L))} 建立字典 單字:數量
L從list轉set格式 來去除重複單字
L從set轉list 因為set無序 list有序 執行for需要有序
D=dict(sorted(D.items(),key=lambda x:x[1],reverse=True)) 排序
key=lambda x:x[1] 以value為排序依據 ( x[0] 以key為排序依據)
reverse=True 降序 (預設升序)
dict(sorted(,,))函數排序 結果為tuple 這邊直接轉dict字典格式
-
子程式
需不需要參數
需不需要回傳
執行完畢會釋放所有子程式用到的記憶體 (不需要額外撰寫)
(先掃描全區域的)區域變數裡有沒有 s,有就用區域變數s(要定義清楚),沒有就找全域變數裡有沒有 s,有就用全域變數s,沒有就出錯
global x 若你想要對全域變數進行變更(改變內容),需要先宣告 (使用全域的要額外處理)
但如果是串列 區域串列與全域串列同名時 一律使用全域串列 不需要先宣告 (使用區域的不知道怎麼處理)
所以你在最後一行才宣告也可以
典型的沒定義清楚:
def a():
s=1
print(s+1,ass+1)
ass=ass+1 #這行有問題
a()
s=10
ass=11
-
壓縮
X=zip(Names,Pays) 壓縮Names跟Pays 內容物可改變 X跟著改變
x=X x完全等價於X 改變一者另一者也會改變
print(X,x)
<zip object at 0x0000021C9388B888> <zip object at 0x0000021C9388B888> 以iterators產出
print(list(X),list(x)) 這方法可能會出問題 原因待解決
[('John', 32000), ('Mary', 40000), ('Lucy', 43000), ('John', 32000)] 強制轉串列
Y,Z=zip(*X) 解壓縮(當初是壓縮幾個這邊要對應) Y跟Z出來是tuple X解壓縮完變成空
print(X,x)
<zip object at 0x0000021C9388B888> <zip object at 0x0000021C9388B888> 以iterators產出
print(list(X),list(x))
[] [] 內容為空(已解壓縮) 故強制轉串列後為空串列
2022/3/20的 (晚上傳了@@)