Python 的lambda表示式的一些小細節

2021-09-24 11:00:46 字數 2813 閱讀 7280

2019獨角獸企業重金招聘python工程師標準》

溫故而知新,無意中發現以前實驗lambda的時候寫的測試**,第乙個反映就是,這是我寫的????!!!

呵呵,想想xx語言剛把lambda正式加進去,python早早支援了,我可以大喊一聲」python是最好的語言「來找找罵嗎?

哈哈。不過,自從有了lambda,很多**一行搞定。不過還是有很多不為一般人注意的小細節,詳見下面**:

# coding=utf-8

#加百子

g=lambda x,y:x+y

total=0;

for i in range(1,101):

#print i

total=g(total,i)

print total

#即使定義相同的lambda方法他們也不能算是同乙個

g1=lambda x,y:x+y

g2=lambda x,y:x+y

print g1

print id(g1)

print g2

print id(g2)

#lambda方法巢狀定義,lambda方法不適用變數引用而直接呼叫

print (lambda x,y:x+((lambda a:a+1)(y)))(1,2)

#lambda方法定義不可以回車,也就是說像for這種**不能出現再lambda方法中

#error

# lambda x,y:

#     num=0

#     for i in range(x,y+1)

#         num+=i

#取可迭代的序列引數中所有滿足真條件的值

#元組和列表

print filter(none,(1,0,true,false))

print filter(none,[1,0,true,false])

#字典的奇葩結果:返回的是key的列表,並且判斷時以第乙個符合的元素的型別作為基準

print filter(none,)

print filter(none,)

print filter(none,)

print filter(none,)

print filter(none,)

print filter(none,)

print filter(lambda x:x%2,)

#取反print filter(lambda x:not x,[1,0,true,false] )

#取奇數和偶數

print filter(lambda x:x%2, [1,2,3,4,5,6,7])

print filter(lambda x:(x+1)%2, [1,2,3,4,5,6,7])

#print filter(lambda [x,y]:(x+y)%2, [[1,2],[3,4],[5,6],[7,1]])error

print map(none,range(10))

print map(lambda x:x*100,range(10))

print map(lambda x:x*100+(x%2)*(-1)+((x+1)%2)*1,range(10))

print map(lambda x:0,range(10))

print map(lambda x:[x-1,x,x+1],range(10))

print map(lambda x:(x-1,x,x+1),range(10))

#元組會變成元素相同的列表

print map(none,(1,2,3,4,5))

#即使返回的列表相同,位址已經不同,也就是兩個列表不是同乙個

l1 = [1, 2, 3, 4, 5, 6]

l2 = map(none, l1)

print l1,id(l1)

print l2,id(l2)

輸出結果如下:(改天有空的時候,我會把輸出結果對應者插進去,現在請各位湊合著看吧)

5050

at 0xb7487bfc>

3074980860

at 0xb7487f7c>

3074981756

4(1, true)

[1, true]

['a', 'c', 'b', 'd']

[1][true]

[1][1]

[1, 2, 'kk', 1.23]

[1, 3]

[0, false]

[1, 3, 5, 7]

[2, 4, 6]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[0, 100, 200, 300, 400, 500, 600, 700, 800, 900]

[1, 99, 201, 299, 401, 499, 601, 699, 801, 899]

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

[[-1, 0, 1], [0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9], [8, 9, 10]]

[(-1, 0, 1), (0, 1, 2), (1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6), (5, 6, 7), (6, 7, 8), (7, 8, 9), (8, 9, 10)]

[1, 2, 3, 4, 5]

[1, 2, 3, 4, 5, 6] 3074533388

[1, 2, 3, 4, 5, 6] 3074983436

Python的Lambda表示式

python的 lambda 表示式,本質上仍是乙個函式。通常是在 需要乙個函式,但這個函式也許就用這一次,或者這個函式異常簡單,於是不想去耗費時間精力定義乙個函式的場合下使用。由於是沒有名字的函式,所以lamba也通常叫匿名函式。這種場景在實際應用中其實很常見 你在某處就真的只需要乙個能做一件事情...

Python的Lambda表示式

介紹 lambda表示式是python中一類特殊的定義函式的形式,使用它可以定義乙個匿名函式。與其它語言不同,python的lambda表示式的函式體只能有唯一的一條語句,也就是返回值表示式語句。其語法如下 lambda 形參列表 函式返回值表示式語句 下面是個lambda表示式的例子 12 34 ...

Python中的lambda表示式

lambda 是為了減少單行函式的定義而存在的。如果可以使用for.in.if來完成的,堅決不用lambda。g lambda x x 1g 1 2 g 2 3 當然,你也可以這樣使用 lambda x x 1 1 2可以這樣認為,lambda作為乙個表示式,定義了乙個匿名函式,上例的 x為入口引數...