目錄python
一種沒有函數名的函數,由於沒有函數名,因此沒法直接調用,只能和某些方法結合在一塊兒使用。編程
lambda 參數:返回值
匿名函數一般與 max()、sorted()、filter()、sorted()
方法聯用。app
max()
連用# 取出字典中薪資最高的人的名字 salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000 } # 直接使用 max() 方法---不能實現 print(max(salary_dict)) # 只能比較字典的 key # 使用函數---能夠實現 def func(k): return salary_dict[k] print(max(salary_dict, key=func)) # 使用匿名函數---能夠實現 print(max(salary_dict, key=lambda name: salary_dict[name])) # key=lambda name: salary_dict[name] 的做用 # 1. 首先明確 salary_dict 是可迭代對象,後面的語句會將 salary_dict 內的對象(鍵值對)逐個取出 # name: salary_dict[name] # 2. 第一步獲得了字典內全部的鍵值對,salary_dict[name] 將全部的值放在一塊兒,進行 max() 函數的運算,獲得這些值中的最大值,name 表示咱們須要拿到的值
運行結果:函數
tank jason jason Process finished with exit code 0
fileter()
連用# 篩選出大於 5 的元素 lt = [1, 2, 3, 4, 5, 6, 7, 8, 9] res = filter(lambda i: i > 5, lt) res = list(res) print(res)
運行結果:翻譯
[6, 7, 8, 9] Process finished with exit code 0
map()
連用# 經過某種關係產生映射,如數學中的han'shu lt = [1, 2, 3, 4] res = map(lambda item: item ** 2, lt) res = list(res) print(res)
運行結果:code
[1, 4, 9, 16] Process finished with exit code 0
sorted()
連用# 將列表裏的人按照薪資大小排序 salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000, } print(sorted(salary_dict, key=lambda name: salary_dict[name],reverse=True))
運行結果:對象
['jason', 'tank', 'nick', 'sean']
sorted()
方法(瞭解)# 瞭解 def sorted(iter, key=None, reverse=None): iter.sort() if key: # key 是一個函數對象 lt = [] lt2 = [] for i in iter: res = key(i) lt.append(res) lt2.append(i) lt.sort() lt3 = [] for i in lt: for j in lt2: if j[1] == i: lt3.append(j) if reverse: lt3.reverse() return lt3 if reverse: iter.reverse() return iter salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000, } salary_list = list(salary_dict.items()) print(salary_list) # [('nick', 3000), ('jason', 100000), ('tank', 5000), ('sean', 2000), ('z', 1000)] print(sorted(salary_list, key=lambda i: i[1], reverse=None)) # [('sean', 2000), ('nick', 3000), ('tank', 5000), ('jason', 100000)]
bytes()
排序
# 將字符解碼成二進制 res = bytes('中國', encoding='utf8') print(res)
運行結果:索引
b'\xe4\xb8\xad\xe5\x9b\xbd'
chr()
、 ord()
字符串
# chr()參考ASCII碼錶將數字轉成對應字符;ord()將字符轉換成對應的數字。 print(chr(97)) print(ord('a'))
運行結果:
a 97
divmod()
# 返回兩個數的商和餘數 print(divmod(10, 4)) # 取整/取餘
運行結果:
(2, 2)
enumerate()
# 迭代得到列表的索引和值 lt = ['a', 'b', 'c'] for i in enumerate(lt): print(it)
運行結果:
(0, 'a') (1, 'b') (2, 'c')
eval()
# 把字符串翻譯成數據類型,字符串去掉引號知足什麼數據類型的條件,就是什麼數據類型 lis = '[1,2,3]' lis_eval = eval(lis) print(type(lis_eval),lis_eval)
運行結果:
<class 'list'> [1, 2, 3]
hash()
# 獲取一個對象的哈希值 print(hash(0)) print(hash('0'))
運行結果:
0 3174128774324462608
abs()
# 求絕對值 print(abs(-13))
運行結果:
13
all()
# 可迭代對象內元素所有爲真,則返回真 print(all([1, 2, 3, 0])) print(all([]))
運行結果:
False True
any()
#可迭代對象中有一個元素爲真,則爲真 print(any([1, 2, 3, 0])) print(any([]))
運行結果:
True False
bin()
# 二進制轉換 print(bin(17))
運行結果:
0b10001
oct()
# 八進制轉換 print(oct(17))
運行結果:
0o21
hex()
# 十六進制轉換 print(hex(17))
運行結果:
0x11
dir()
# 列舉出全部模塊的功能 import time print(dir(time))
運行結果:
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname', 'tzset']
frozenset()
# 不可變集合 s = frozenset({1, 2, 3}) print(s)
運行結果:
frozenset({1, 2, 3})
globals()
、 locals()
# 查看全局變量名;查看局部變量名
運行結果:
pow()
# 冪運算 print(pow(3, 2))
運行結果:
9
round()
# 四捨五入 print(round(10.333))
運行結果:
10
slice()
# 索引取值 s = slice(1, 5, 2) # 1start,5stop,2step lt = [1, 2, 3, 4, 5, 6, 7] print(lt[s]) print(lt[1:5:2])
運行結果:
[2, 4] [2, 4]
sum()
# 求和 print(sum([1, 2, 3, 4, 5]))
運行結果:
15
\_\_import\_\_()
# 經過字符串導入模塊 time = __import__('time') print(time.time())
運行結果:
1569482755.649973 # 真實時間
異常處理只能捕捉到程序中的邏輯錯誤。
代碼 try: 認爲可能會出錯的代碼 except Exception as e: print(e) # 若是出現錯誤,打印錯誤信息 finally: 須要繼續執行的代碼
面向過程編程:
核心是 過程 ,指的是解決問題的步驟,先作什麼,再作什麼,最後作什麼。
優勢:將複雜的問題流程化,簡單化。
缺點:擴展性差。