內置函數思維導圖:https://www.processon.com/mindmap/5c10c08ae4b07c3e3334f22d 內置函數 作用域相關: locals() 返回當前作用域中的名字 globals() 返回全局作用域中的名字 迭代器相關: range() 生成數據 next() ...
內置函數思維導圖:https://www.processon.com/mindmap/5c10c08ae4b07c3e3334f22d
內置函數 作用域相關: locals() 返回當前作用域中的名字 globals() 返回全局作用域中的名字 迭代器相關: range() 生成數據 next() 迭代器向下執行一次,內部實際使用__next__()方法返回迭代器的下一個項目 iter() 獲取迭代器,內部實際使用的是__iter__() 方法來獲取迭代器 lst = ['今天星期三', "明天星期四", "馬上星期五"] it = lst.__iter__() print(it.__next__()) print(it.__next__()) print(it.__next__()) it = iter(lst) # it = lst.__iter__() print(next(it)) # it.__next__() print(next(it)) print(next(it)) 字元串類型代碼的執行 eval() 執行字元串類型的代碼,並返回最終結果 print(eval("2+2")) # 4 n = 8 print(eval("2+n")) # 10 #eval 是把字元串類型的數據作為代碼進行執行 s = "18+2" ret = eval(s) # 執行字元串類型的代碼 print(ret) exec() 執行字元串類型的代碼 s = "{'name':'alex', 'age':18, 'isMan':False}" # 字元串 # 把字元串類型的代碼還原回字典, 列表, 元組 ret = eval(s) # 側重的有返回值 print(ret) print(type(ret)) compile() 將字元串類型的代碼編譯.代碼隊形能夠通過exec語句來執行或者eval()進行求值 code = ''' for i in range(10): if i % 2 == 0: print(i) ''' c = compile(code, "", "exec") # 預載入代碼 # exec exec(c) # 運行代碼 匿名函數 lambda 匿名函數統一的名字就是 lambda fn = lambda a, b : a + b # 定義一個很簡單的函數. 複雜的函數不要用lambda ret = fn(3, 5) print(ret) print(func) print(fn) 使用場景: 配合著sorted, map, filter 一起使用 sorted 排序函數. 請你自己去定義排序的規則 sorted 排序函數. 讓你自己去定義排序的規則 lst = [11,5,36,1,27,58] s = sorted(lst) # 預設從小到大排序. print(s) lst = ["胡一菲", "張偉", "關穀神奇", "曾小賢呂小布", "諾瀾"] # 按照字元串長度排序 def func(s): return len(s) # 返回長度 # 執行流程: # 把可迭代對象中的每一項拿出來, 作為參數傳遞給後面key函數. # 函數返回數字. 根據數字進行排序 s = sorted(lst, key=func) print(s) print(sorted(lst, key=lambda s:len(s) )) 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} ] # 按照體重進行排序 print(sorted(lst, key=lambda dic:dic['tizhong'], reverse=True)) map 映射函數 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)) 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))