Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python lambda函数声明和列表生成调用_Python_List_Python 3.x_Lambda - Fatal编程技术网

Python lambda函数声明和列表生成调用

Python lambda函数声明和列表生成调用,python,list,python-3.x,lambda,Python,List,Python 3.x,Lambda,在生成如下列表时,lambda函数在方括号外声明,然后应用于每个i >>> g = lambda x: x*10 >>> [g(i) for i in range(10,21)] [100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200] 是否可能(以及如何)在列表中声明lambda函数并调用它?疯狂的方法: [(lambda x: x*10)(i) for i in range(10,21)] [i *

在生成如下列表时,lambda函数在方括号外声明,然后应用于每个
i

>>> g = lambda x: x*10
>>> [g(i) for i in range(10,21)]
[100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200]
是否可能(以及如何)在列表中声明lambda函数并调用它?

疯狂的方法:

[(lambda x: x*10)(i) for i in range(10,21)]
[i * 10 for i in range(10,21)]
理智的方法:

[i * 10 for i in range(10,21)]
您也可以使用地图:

>>> list(map(lambda x:x*10,range(10,21)))
[100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200]

第一次猜测:
[(λx:x*10)(i)表示在(10,21)范围内的i)]
。为什么你觉得你想这样做?你最终会产生缓慢和不可读的结果code@enzyme请注意,在Python中,短代码并不总是意味着高效的代码。您永远不会希望这样做。lambda只是一个单行函数,您可以轻松地将其主体放入列表理解中。将lambda指定给变量很少是正确的,但一堆糟糕的lambda教程仍然会这样做。说明:在理解中声明lambda函数的问题是,会为每个变量重复创建该函数列表中的项目。因为lambda的主体是一个表达式,所以最好直接将该表达式放入理解中。除了
map
返回一个列表,所以不需要转换之外,这是一个很好的答案。哎呀,应该已经考虑过了。这个评论对于Python2.Grt是正确的。如果您意识到了这一点:)@tdelaney Python2版本:
map(lambda x:x*10,xrange(10,21))