zip():拉鍊方法,用於將可迭代對象做爲參數,將對象中對應的元素打包成一個元組,而後返回這些由這些元組組成的內容(迭代器),若是這個可迭代對象的元素個數不一致,則按照長度最短的返回python
lst1 = [1,2,3] lst2 = ['a','b','c','d'] lst3 = (11,12,13,14,15) for i in zip(lst1,lst2,lst3): print(i) 結果: (1, 'a', 11) (2, 'b', 12) (3, 'c', 13)
sorted():排序安全
l1 = [7, 4, 1, 6,] print(sorted(l1)) # 造成了新的列表 # 加key lst = [ {'name': 'xiaohong', 'age': 73}, {'name': 'xiaoming', 'age': 35}, {'name': 'xiaoli', 'age': 25}, ] print(sorted(lst,key=lambda x:x['age'])) #按照年齡排序 print(sorted(lst,key=lambda x:x['age'],reverse=True)) #第三個參數,逆序
filter():過濾,至關於生成器表達式的篩選模式,返回一個迭代器閉包
l1 = [56, 67, 12, 34, 78, 90] print(i for i in l1 if i > 60) #[67,78,90] print(list(filter(lambda x:x>60,l1))) #[67,78,90]
map():至關於生成器表達式的循環模式app
l1 = [56, 67, 12, 34, 78, 90] print(i**2 for i in l1) #<generator object <genexpr> at 0x000001E97FFFC888> print(list(map(lambda x:x**2,l1))) #[3136, 4489, 144, 1156, 6084, 8100]
reduce(): python3從內置函數剔除了,放到了模塊中函數
就是把列表,元組的成員按照既定的規則累加code
from functools import reduce print(reduce(lambda x,y:x+y,[1,2,3,4,5])) #15 """ 第一次: x,y 1,2 求和 3 記錄到內存 第二次: x,y 3,3 求和 6 記錄到內齒 第三次: x,y 6,4 求和 10 記錄到內齒 第四次: x,y 10,5 求和 15 返回 """
# 初版 lst = [] #lst是全局變量,不安全 def func(price): lst.append(price) return sum(lst)/len(lst) # 第二版 def func(price): lst = [] #自由變量 lst.append(price) return sum(lst)/len(lst) # 爲了保證數據的安全,閉包 def func(): lst = [] #自由變量 def func1(price): lst.append(price) return sum(lst)/len(lst) return func1 #return是給全局複製了一份,獲得了func1的函數地址 avg = func() print(avg(100000)) print(avg(110000)) print(avg(120000)) print(avg(110000)) # 判斷一個函數是否是閉包--函數中有沒有自由變量 # 函數名.__code__.co_freevars 查看函數的自由變量