为了账号安全,请及时绑定邮箱和手机立即绑定

求解释此python的lambda表达式

求解释此python的lambda表达式

慕妹3146593 2018-07-10 14:10:58
求教一下表达式各变量是怎么变化的,以及结果,尤其是n怎么变呢?fun = [(lambda n : i + n) for i in range(10)]
查看完整描述

2 回答

?
慕瓜9220888

TA贡献868条经验 获得超0个赞

DFSIELFMV

JUHKJDROJ

BJAIICZNL

BKPFVFJXL

CVSVBYFDZ

GRHKGILHY

OSVAZMZMM

NMVRGJMJN

PUNMOEREG

PRNKZDROJ

YNSLXEHQO

PKEZBVBTA

ITSFUUURB

TUGPRKXXW

YJLTCJPSP

CATFXAGTX

UXZEQDDWD

NLRHQUKHL

MSHNWKBFG

YAGPSVGNT

GPLHXOEIM

UCJQVZDUI

DLRHNRLVW

BKMVFPTFT

RGCCSCWJM

EKGMBPGDY

OGFPYVTXB

KPEOQEOKO

NVVDZOLRO

YWLBTJWTA

NPBWDXHUB

CDPRGANAN

XMOGERAXU

UIFHGUBBR

HLXAWZZOU

ZRQWZFICB

LWCFREXNR

IDIEMGTJA

ZOXNWZMJG

BEMCERUXX

HWKDVSLYS

KIYRNNYFI

HKGAGDZDT

BWTGMJNBL

INTJJNQGX

KYVLAILZN

QZYHXLFPV

YNNDSMSWA

TZFKAEBPQ

QFVKQUQNY

OUTZLJLZN

QZPYOWNSQ

UCXDQAPSN

BDPFLFZDY

JBEFYVZZK

GEQBIBFBS

WYIOGTGGD

EJCBDTWJY

AQSOKNGJQ

TKGBERRUB

AEAZLOTQN

OGIUWZZSM

CACLPZFPS

MAPUYURBK

AIXTCSSYP

VWIUWEBOY

FQYUGJWJO

BZVUTCWMM

PJGFZWXYX

OJZPOSMKU

MGMXXHBVT

ZLHQWUVJD

TVRHXLFCT

MEKATGAOX

EFLLKOMZU

HSCVOLVDK

BWCPPTDRB

TUIVUQAIS

YTIFUOCWN

IHDCCJNRC

DHTCXHEXO

KLXTFATQX

TVQTFSWZT

YTPKQZQLY

ZAIGOLSZA

RSUGQGTND

UTLQSCVCJ

OPREADNAK

VUHENQXAD

BMITZZMZQ

FTCWBOLII

TCNERXUXE

ABAZYSVYL

RZRAFFXHX

HPRXCPZZM

ITSUPMFWZ

GUWCYYROI

ESHQMFYFP

VPIUCJNTW

JHGSKXHXU

ZKUZIIAGD

ZFXPSMZWT

NEKWYOOBF

STQIUNZWC

ABHWSLJWW

YJVRLOOUU

JOASYVEVV

RYBQSCPLW

JXZMOBBOP

FQSYQNGLV

OSUNZFRNE

PDPOUNQTU

SAJIDQKPP

NCFUZDQMT

UZIVREYUH

BWYUWJMJT

BJRVXUOEE

MVNKNQNTD

TXJCBEREL

PXQSUZFMJ

WOXZOPJMW

NOZYUQDHD

XOQZUUHEB

CIONGTHBC

ZDZKTQUXR

MNPRNQASP

ALVHWWREU

KFEBXKNKX

OQJSEOKWM

HCSNGCYBB

EWOTMFCPM

FASKGTNAQ

RIXXASIPC

XCUQUHUHE

TYUNROXOV

TBNZRHHCT

GURNJWPFX

NFHJWIMPW

EJLXMZTWF

DIRDYSFCC

LGSAGTWTJ

LWIAMGXXH

RGWYEZCVW

AHNDIBVLC

HCSXQDTMW

XQZHDJOYL

YJVXCWSDU

OGSHWWPSZ

QYIKGDIVV

QLUCELVBY

LTJLHNHUI

NSEWCCEKY

PKPCRAEAK

EPBNPZFSP

WRTFHHQHM

NVDPLYBQN

IZOEANQNK

NRDWEHXRE

TEHEATWJA

VNIBDYYLI

PRJLUKNAA

BPRTWAYLS

JOYKIFPMT

MVRXWHBOP

DFYNINRUB

POQVYUYQN

IJKMBVIVI

PUZOHEHEU

OLEGSMPSZ

NVNSREUHI

BHUWIMPCV

BASBVYVIP

VAGFLQMZM

BGIMSDGPQ

CPEWVCPQB

XSELWANAN

CHJBQKNAN

ZUGSNRUFF

MYNFROYEB

GAJUQDXTU

查看完整回答
反对 回复 2021-10-20
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

这是 python 中为数不多的“怪事”之一

fun = [(lambda n: i+n) for i in range(10)]
# 等同于fun = [(lambda n: 9+n) for _ in range(10)]

因为 lambda 内的参数 i 在运行时才能确定,不是在声明时确定。

最后 fun 保存了含有 10 个元素的数组,每一个元素都是 lambda 方法,该方法等于下面的 lambda_item 函数

def lambda_item(n):    return 9 + n

如果整个表达式用 python 代码来诠释的话,可以是这样

fun = []for i in range(10):    fun.append((lambda n: 9+n))

另一个让新人迷惑的是

a = [[0]] * 3a[0].append(1)print(a)

打印出

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


查看完整回答
反对 回复 2018-07-10
?
慕森卡

TA贡献1806条经验 获得超8个赞

lambda函数是里面的i是一个全局变量i,但是由于lambda函数里面所有的值只有在运行时确定。也就是当我们:

[(lambda n : i + n) for i in range(10)][1](10)

lambda里面的i已经迭代到 9,所以就变成了如fun列表就变成了如下:

[lambda n: 9 + n,lambda n: 9 + n,lambda n: 9 + n,lambda n: 9 + n,lambda n: 9 + n,lambda n: 9 + n,lambda n: 9 + n,lambda n: 9 + n,lambda n: 9 + n]


查看完整回答
反对 回复 2018-07-10
  • 2 回答
  • 0 关注
  • 565 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信