# __author__:Nzkalhbxx
# __date__:17-10-31
# python為我們提供了很多內(nèi)置函數(shù)方便開發(fā)者使用, 下面介紹一些重要的常用內(nèi)置函數(shù)
print("all(iterable)".center(33, "-"))
# all(iterableObj): 判斷可迭代對象iterableObj是否全部非空, 是則返回True, 有空值則返回False(注: 空字符串""也為空值)
elements = [1, "psj", " "]
print(all(elements))
elements = [1, "psj", " ", ""]
print(all(elements))
elements = [1, "psj", " ", None]
print(all(elements))
print("filter()".center(33, "-"))
# 1): 過濾器函數(shù)filter(fun, sequence): 通過fun的邏輯過濾可迭代序列sequence中的元素并返回一個迭代器對象
nums = [1, 3, 7, 11, 21, 38, 77]
def fun1(ele):
if ele != 38:
# 滿足過濾條件, 返回元素, 無論return什么, 只要返回的值非空(非0或非None或非""空字符串)即返回值為真, 則說明當(dāng)前元素不被過濾
# 即filter()函數(shù)本身只起過濾作用, 并不具備對返回的迭代器的數(shù)據(jù)修改作修改的功能
return ele
# return "lq"
# return " "
# return 1
# 滿足過濾條件, 返回一個空值(0或者None或"")即返回值為假, 則說明當(dāng)前元素需要被過濾
# return None
# return 0
# return ""
# filter(fun, seq)的第二個參數(shù)必須是可迭代對象, fun依次將seq的元素取出作為參數(shù)判斷是否需要過濾
iterator = filter(fun1, nums)
print(type(iterator))
print(iterator)
print(list(iterator))
print(nums)
print("map()".center(33, "-"))
# 2): map(fun, sequence): 通過fun的邏輯過濾元素, 且可修改返回的迭代器的數(shù)據(jù)
strings = ["zjy", "zyj", "psj", "Pp", "lq"]
def fun2(ele):
if ele != "lq":
# 滿足判斷條件, 返回修改后的元素值, map可對被迭代的元素作修改并返回一個修改后的數(shù)據(jù)值組成的迭代器
return ele + "醬醬~"
iterator = map(fun2, strings)
print(type(iterator))
print(iterator)
print(list(iterator))
print(strings)
print("reduce()".center(33, "-"))
# reduce(fun, sequence): 對可迭代序列sequence中的元素每兩個兩個作處理, 返回處理結(jié)果再和后續(xù)一個的元素作處理, 直到迭代完所有的元素,
# 最終返回最后一次處理的結(jié)果, 由于python3默認(rèn)不導(dǎo)入該方法, 因此需要從函數(shù)工具包中顯式導(dǎo)入from functools import reduce
from functools import reduce
nums = [1, 2, 3, 4, 5]
def fun3(ele1, ele2):
return ele1 + ele2
# 相當(dāng)于: return(return(return(return 1 + 2) + 3) + 4) + 5
result = reduce(fun3, nums)
print(type(result))
print(result)
print(nums)
strings = ["i", "love", "you"]
def fun4(ele1, ele2):
return ele1 + " " + ele2
result = reduce(fun4, strings)
print(result)
print("lambda()".center(33, "-"))
# lambda *args: 返回值
# 返回一個匿名函數(shù), 可通過一個變量去接收
print(lambda x: x)
fun5 = lambda x, y: x * y
result = fun5(3, 7)
print(result)
# 使用匿名函數(shù)lambda和reduce函數(shù)實(shí)現(xiàn)1->20的階乘
result = reduce(lambda x, y: x * y, range(1, 21))
print("1->20的階乘為: %s"%result)
運(yùn)行結(jié)果
圖片.png