尽管f
和lambda
函数是相同的,为什么下面两个列表理解的输出是不同的?
f = lambda x: x*x
[f(x) for x in range(10)]
和
[lambda x: x*x for x in range(10)]
Mind you, both type(f)
和 type(lambda x: x*x)
return the same type.
尽管f
和lambda
函数是相同的,为什么下面两个列表理解的输出是不同的?
f = lambda x: x*x
[f(x) for x in range(10)]
和
[lambda x: x*x for x in range(10)]
Mind you, both type(f)
和 type(lambda x: x*x)
return the same type.
第一个函数创建一个lambda函数并调用它十次.
第二个不调用该函数.它创建了10个不同的lambda函数.它将所有这些都放在一个列表中.要使其等同于第一个,您需要:
[(lambda x: x*x)(x) for x in range(10)]
或者更好的是:
[x*x for x in range(10)]