列表推導式 lambda for(Python)

2021-08-16 09:00:08 字數 554 閱讀 6890

以下**將輸出什麼?

def testfun():

temp = [lambda x : i*x for i in range(4)]

return temp

for everylambda in testfun():

print (everylambda(2))

腦中默默一想,這還用說麼,肯定是:

0 2 4 6

最後一看答案,竟然是:

6 6 6 6

說明:

當任何 testfun() 返回的函式被呼叫,在那時,i 的值是在它被呼叫時的周圍作用域中查詢,到那時,無論哪個返回的函式被呼叫,for 迴圈都已經完成了,i 最後的值是 3,因此,每個返回的函式 testfun 的值都是 3。因此乙個等於 2 的值被傳遞進以上**,它們將返回乙個值 6 (比如: 3 x 2)。

列表推導式

1.先判斷再賦值 a 5 b 6 c a b print c false 列表組合 list1 1,2,3 list2 4,5,6 list3 list1 list2 print list3 一行 方括號中是對字串的切片 後邊有個or 為從左到右,取第乙個為真的值,如果or左側為非空字串,就是用or...

列表推導式

0 9的平方,輸出為列表 list1 x 2 for x in range 10 range 10 是0 9 print list1 結果為 0,1,4,9,16,25,36,49,64,81 使用for迴圈完成 0 9的平方,輸出為列表 list1 for i in range 10 print ...

列表推導式

expr for val in collection if condition 滿足condition條件就把val加入到列表中 這個列表推導式等價於下面這個多行 生成的a陣列就和這個列表推導式生成的東西一模一樣 a for val in collection if condition 備註 利用列...