python函式式程式設計只是借鑑函式式程式設計的一些特點,可以理解成一半函式一半python
需要講述:
存在問題:
用法:
計算乙個數字的100倍數
stm = lambda x: 100 *xprint(stm(
89))
結果:8900
多個引數
stm2 = lambda x,y,z,:x + y * 10 + z * 100print(stm2(
4,5,6
))結果:
654
變數可以賦值
a = 100b = a
函式名稱就是乙個變數
def funa():print(
"in funa")
funb =funa
funb()
以上**得出結論:
#高階函式舉例#funa是普通函式,返回乙個傳入數字的100倍數字
def funa(n):
return n * 100
# 再寫乙個函式,把傳入引數乘以300倍
def funb(n):
#最終返回300n
return funa(n) *3
print(funb(9))
#寫乙個高階函式
def func(n,f):
#假定函式是把n擴大100倍
return f(n) * 3
print(func(
9,funa))
#map 舉例#有乙個列表,想對列表裡的每個元素乘以10
l1 = [ i for i in range(10
)]l2 =
for i in
l1:)
print(l2)
或高階函式
def multen(n):
return n*10
l3 =map(multen,l1)
for i in
l3: print(i,end="
")
reduce歸併,縮減
把乙個可迭代物件最後歸併成乙個結果
對於函式引數的函式要求:必須由兩個引數,必須由返回結果
reduce([
1,2,3,4,5]) == f(f(f(f(1,2),3),4),5
) reduce 需要匯入functools包
from
functools import reduce
def myadd(x,y):
return x +y
rst = reduce(myadd,[1,2,3,4,5
,])print(rst)
結果:15
def isrven(a):return a % 2 == 0
l = [1,2,3,4,5,6,7,8,9,10
]rst =filter(isrven,l)
print(rst)print([ifor i in rst])
Python高階特性
l csx sarah tracy bob jack print l 0 l 1 l 2 輸出 csx sarah tracy l 0 3 輸出 csx sarah tracy 如果第乙個索引是0,還可以省略 print l 2 輸出 bob jack print l 2 1 輸出 bob d fo...
Python高階特性
python 高階特性 from collections import iterable from collections import iterator 切片 list切片 l list range 100 print l 0 3 取前3個元素 print l 3 取前3個元素 print l 4...
Python高階特性
切片 slice 非常靈活,體現了python的簡便性 1.取乙個list和tuple的部分元素時的簡化操作 l michael sarah tracy bob jack l 0 3 michael sarah tracy 從0開始不包括3,第乙個索引是0可省略,也支援負數按倒數的順序取值,什麼都不...