內建函式思維導圖:https://www.processon.com/mindmap/5c10ca52e4b0c2ee256ac034
內建函式
匿名函式
匿名函式統一的名字是:<lambda>
使用場景: 配合著sorted, map, filter 一起使用
fn = lambda a, b : a + b # 定義一個很簡單的函式. 複雜的函式不要用lambda ret = fn(3, 5) print(ret) print(fn)
sorted 排序函式. 讓你自己去定義排序的規則
執行流程:
把可迭代物件中的每一項拿出來, 作為引數傳遞給後面key函式.
函式返回數字. 根據數字進行排序
lst = [11,5,36,1,27,58] s = sorted(lst) # 預設從小到大排序. print(s) lst1 = ["胡一菲", "張偉", "關穀神奇", "曾小賢呂小布", "諾瀾"] def func(s): return len(s) # 返回長度 s = sorted(lst, key=func) print(s) #使用匿名函式配合sorted使用 #print(sorted(lst, key=lambda s:len(s) ))
filter 過濾
把可迭代物件開啟. 把內部元素一個一個的傳遞給前面的函式. 由這個函式決定此項是否保留
lst = ["張無忌", "張翠山", "范冰冰", "金毛獅王", "李冰冰"] # 過濾掉姓張的人 f = filter(lambda name : not name.startswith("張"), lst) print("__iter__" in dir(f)) # 可迭代物件 for el in f: print(el) lst = [ {"name":"alex", "shengao":150, "tizhong":250}, {"name":"wusir", "shengao":158, "tizhong":150}, {"name":"taibai", "shengao":177, "tizhong":130}, {"name":"ritian", "shengao":165, "tizhong":130}, {"name":"nvshen", "shengao":160, "tizhong":120}, {"name":"baolang", "shengao":183, "tizhong":190} ] # 過濾掉體重大於180的人 想要的是 小於180 f = filter(lambda d : d[`tizhong`] <= 180, lst) print(list(f))
map 對映函式
lst = ["籃球球", "打打檯球", "唱歌", "爬慌山", "步"] m = map(lambda s: "愛好:"+s , lst) print(list(m)) lst = [1,5,78,12,16] # 計算每個數字的平方 print([i **2 for i in lst]) m = map(lambda i: i ** 2, lst) print(list(m))
eval 是把字串型別的資料作為程式碼進行執行
s = "18+2" ret = eval(s) # 執行字串型別的程式碼 print(ret) s = "{`name`:`alex`, `age`:18, `isMan`:False}" # 字串 ret = eval(s) # 側重的有返回值 print(ret) print(type(ret))
exec execute 執行字串型別的程式碼, 不能太長. 不能太亂
code = input("請輸入你要執行的程式碼") exec(code) # 沒有返回值. 想要返回值用eval print(a) # pycharm報錯不一定準
compile 編譯: 把你要執行的程式碼先預編譯. 通過exec和eval可以執行我們的程式碼
code = ``` for i in range(10): if i % 2 == 0: print(i) ``` c = compile(code, "", "exec") # 預載入程式碼 exec(c) # 執行程式碼