繁体   English   中英

使用两个参数定义lambda函数

[英]defining a lambda function with two arguments

我有一些代码如下所示。

import math
square_root = lambda x: math.sqrt(x)
list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
map(square_root,list)

输出:

[1.0,
 1.4142135623730951,
 1.7320508075688772,
 2.0,
 2.23606797749979,
 2.449489742783178,
 2.6457513110645907,
 2.8284271247461903,
 3.0,
 3.1622776601683795,
 3.3166247903554,
 3.4641016151377544,
 3.605551275463989,
 3.7416573867739413,
 3.872983346207417,
 4.0]

现在我想用power而不是square_root

import math
power = lambda x: math.power(x,n)
list = [1,2,3,4,5]
map(power,list,2)

我收到以下错误? 如何在地图中使用两个参数?

TypeError Traceback(最近一次调用最后一次)/home/AD/karthik.sharma/ws_karthik/trunk/ in()----> 1 map(power,list,2)

TypeError:map()的参数3必须支持迭代

一种方法是:

power = lambda x, n: math.pow(x,n)
list = [1,2,3,4,5]
map(power,list,[2]*len(list))

表达式[2]*len(list)创建另一个与现有列表长度相同的列表,其中每个元素包含值2. map函数从其每个输入列表中获取一个元素并将其应用于power函数。

另一种方式是:

power = lambda x, n: math.pow(x,n)
list = [1,2,3,4,5]
map(lambda x: power(x, 2),list)

它使用部分应用程序来创建第二个lambda函数,该函数只接受一个参数并将其提升到幂2。

请注意,您应该避免将名称list用作变量,因为它是内置Python list类型的名称。

列表推导是另一种选择:

list = [1,2,3,4,5]
[math.pow(x,2) for x in list]
import math
power = lambda n: lambda x: math.pow(x,n)
list = [1,2,3,4,5]
map(power(2),list)

像这样:

power = lambda x, n: math.pow(x,n)
list = [1,2,3,4,5]
map(lambda x: power(x, 2), list)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM