這幾天在回顧一下map和lambda函式,突然發現這兩個有點好像,豬腦子就卡殼了。還是以前學的不牢啊!只好重新用自己的感想寫這麼一遍!
1、lambda函式
他就是個沒有名字的函式,比如匿名信這種。我們能在某一函式引數條件中直接呼叫他、或者借用其返回的實體構成新的函式名如下。
比如說 lambda x,y: x+y 就是說我的函式輸入x,y,返回x+y
y=lambda a,b,c:a+b+c
print('\n',y(1,2,3))
結果為6
仔細看看,是不是y成為了新的函式名?!
2、map函式
map就是對映的意思,他肯定是將兩種東西結合對映為某乙個結果。他就是接收乙個函式function和乙個list列表,並通過把函式f依次作用在list的每乙個元素,從而得到乙個新的list返回(py3中返回乙個map物件,用list函式轉換一下即可)
def fib_recur(n):
if n<=1:
return n
else:
return fib_recur(n-1)+fib_recur(n-2)
x=input().strip().split()
n=list(map(int, x))[0]
for i in range(1, n):
print(fib_recur(i),end=' ')
注意哈這個x必須是列表,int則表示函式了,當然也可以其他函式命名
def fib_recur(n):
if n<=1:
return n
else:
return fib_recur(n-1)+fib_recur(n-2)
def ex(c):
return int(c)
x=input().strip().split()
n=list(map(ex, x))[0]
for i in range(1, n):
print(fib_recur(i),end=' ')
注意他是自動迭代地對x列表的每乙個元素操作,也就是說map自帶迭代器!
3、map函式和lambda函式結合
顯然只用改變map函式中的函式體就可以,無非就是函式體沒有了實名,將lambda放於map的引數條件之中
def fib_recur(n):
if n<=1:
return n
else:
return fib_recur(n-1)+fib_recur(n-2)
def ex(c):
return int(c)
##x=input().strip().split()
##n=list(map(ex, x))[0]
####for i in range(1, n):
## print(fib_recur(i),end=' ')
x=input().strip().split()
n=list(map(lambda a:int(a), x))[0]
for i in range(1, n):
print(fib_recur(i),end=' ')
在本**list(map(lambda a:int(a), x)) 這一句只用注意兩個點:
1) lambda引數只能是乙個引數標量,因為map是自動對列表x的元素迭代的
2)x為一維情況,所以他的每乙個元素是標量
針對x為二維情況,博主暫時沒想到好的解決辦法,只能是x[2]來選擇其中的乙個向量列表。
def fib_recur(n):
if n<=1:
return n
else:
return fib_recur(n-1)+fib_recur(n-2)
x=[[1,2,3],[2,4,6],[3,6,9]]
n=list(map(lambda a:int(a), x[2]))[2]
for i in range(1, n):
print(fib_recur(i),end=' ')
python的map函式和lambda函式
map函式的功能是根據提供的函式對指定序列做對映,就是對第二個引數的每乙個值執行第乙個引數所指定的函式 lambda是定義乙個匿名函式 crsusr rws1270149 python study cat mypy02.py usr bin python3.7 import sys,string,o...
Python中的defaultdict函式
用於產生乙個帶有預設值的dict。主要針對key不存在的情況下,也希望有返回值的情況。a dict a k1 1 a a k2 traceback most recent call last file line 1,in keyerror k2 對於普通的dict,key不存在就報錯。但是對於def...
python中ground truth的函式
機器學習包括有監督學習 supervised learning 無監督學習 unsupervised learning 和半監督學習 semi supervised learning 在 有監督學習中,資料是有標註的,以 x,t 的形式出現,其中x是輸入資料,t是標註.正確的t標註是ground t...