python中的lambda表達,pythonlambda表達
C++中的lambda運算式與C++11加入標準庫,是一個簡短的匿名的可調用對象,編譯器會將其轉化為一個匿名類的對象。lambda運算式的最大特點就是簡短靈活,調用方便。它不需要處理很複雜的邏輯,通常只包含一兩句簡短的代碼。
python作為一種優雅簡潔的指令碼語言自然不會錯過這種機制。python中的lambda運算式形式如下:
lambda 參數列表 : 運算式
如果沒有需要傳遞的參數,參數類表可以為空白了,但運算式部分不可為空,因為lambda運算式必須有返回值。
lambda運算式會返回一個值,這個值可以是一個計算結果,也可以是一個新的lambda運算式
返回一個值:
>>> f = lambda x,y : x+y //建立一個lambda運算式>>> print f(1, 2) //調用lambda運算式3
返回一個新的lambda運算式:
>>> f = lambda x : lambda y : x+y //嵌套的lambda運算式>>> a = f(1) //f(1)返回一個lambda運算式>>> b = a(10)>>> print b11
下面看看經常與lambda運算式一起使用的三個python內建函數:
filter,map,reduce
1、filter(bool_func,seq):遍曆列表seq中的每個元素,傳入返回值為bool類型的函數bool_func中,從列表中過濾出函數返回值為true的元素,得到一個新的列表
<span style="font-size:10px;">>>> filter(lambda x : x > 3, [1, 2, 3, 4, 5])[4, 5]</span>
2、map(func,seq1[,seq2...]):將列表通過func函數映射為一個新的列表
>>> map(lambda x : x*2, [1, 2, [3, 4]])[2, 4, [3, 4, 3, 4]]
3、reduce(func,seq[,init]):這裡的func函數接受兩個參數,reduce依次從seq中取一個元素傳入func函數,另一個參數是上一次func函數的返回值。第三個參數為選擇性參數,如果指定了init,則開始時將init和seq中的第一個元素傳給func;如果沒有指定,則開始時取seq的頭兩個元素給func。
<span style="font-size:10px;">>>> reduce(lambda x,y : x + y,[1,2,3,4]) 10 >>> reduce(lambda x,y : x + y,[1,2,3,4],10) 20 </span>
c#轉python遇到問題,對於lambda運算式
你這是用的ironpython吧。
def click(x,y):
x.Text = 'name'
form1.Click += click;
這樣寫即可
python中的lambda函數與變數的問題
>>> def p(x):
print(x)
>>> g=10
>>> m=lambda x=g:p(x)
>>> del(g)
>>> m()
10
>>>
這個絕對可以了