【1.27】lambda 的理解
li_1 = [lambda :x for x in range(10)]
这个理解看看下面的:
li = [lambda : x]
x=1
li[0]() 返回 1
x = 100
li[0]() 返回 100
这样就可以理解
在看看li_1 就可以理解为:
li_1 = [lambda :x for x in range(10)]
x for x in range(10) 为一个整体 就是取出0 -9 的10个数 为一个列表
li_1 就是 10个元素的列表
每一个列表都是一个lambda 函数在内存中的地址
这样 就需要 li_1[0]() 这样的方式来运行 函数名是内存中的地址 也就是内存中的地址的门牌号
需要加一个( ) 才能运行
这也就是 定义函数要加括号的原因
>>>
>>> li =[lambda :x for x in range(10)]
>>> li
[<function <listcomp>.<lambda> at 0x00C33270>,
>>> li
[<function <listcomp>.<lambda> at 0x00C33270>,
<function <listcomp>.<lambda> at0x00C331E0>,
<function <listcomp>.<lambda> at 0x00C33390>,
<function <listcomp>.<lambda> at 0x00C33420>,
<function <listcomp>.<lambda> at 0x00C33468>,
<function <listcomp>.<lambda> at 0x00C334B0>,
<function <listcomp>.<lambda> at 0x00C334F8>,
<function <listcomp>.<lambda> at 0x00C33540>,
<function <listcomp>.<lambda> at 0x00C335D0>,
<function <listcomp>.<lambda> at 0x00C33588>]
li[0]
返回 [<function <listcomp>.<lambda> at 0x00C33270>]
li[0]() 结果就是 9
但是这里 x for x in range(10) 运行是取出了 0- 9 10个数 但是x的最后值是 for 执行完的值 9
这样
执行 li_1[ ]() 的结果一直都是就是 9
浙公网安备 33010602011771号