在Python中对Lambda使用Map函数:TypeError:()接受0个位置参数,但给出了1个
系统:WIN10 IDE:MS VSCode 语言:Python版本3.7.3 库:熊猫1.0.1版 数据源:下面提供的基础数据 数据集:下面提供的基础数据 在尝试使用“map”函数映射转换器函数(我使用lambda构建)以遍历样本温度列表时,由于某种原因,我遇到了一个问题。下面提供了示例代码,它不断抛出以下错误:TypeError:()接受0个位置参数,但给出了1个 已采取步骤:在Python中对Lambda使用Map函数:TypeError:()接受0个位置参数,但给出了1个,python,dictionary,lambda,higher-order-functions,positional-parameter,Python,Dictionary,Lambda,Higher Order Functions,Positional Parameter,系统:WIN10 IDE:MS VSCode 语言:Python版本3.7.3 库:熊猫1.0.1版 数据源:下面提供的基础数据 数据集:下面提供的基础数据 在尝试使用“map”函数映射转换器函数(我使用lambda构建)以遍历样本温度列表时,由于某种原因,我遇到了一个问题。下面提供了示例代码,它不断抛出以下错误:TypeError:()接受0个位置参数,但给出了1个 已采取步骤: temps = [('Berlin', 29), ('Cairo', 36), ('Buenos Aires',
temps = [('Berlin', 29), ('Cairo', 36), ('Buenos Aires', 19), ('Los Angeles', 26), ('Tokyo', 27), ('New York', 28), ('London', 22), ('Beijing', 32)]
c_to_f = lambda: (data[0], (9/5)*data[1] + 32)
list(map(c_to_f, temps))
temps = [('Berlin', 29), ('Cairo', 36), ('Buenos Aires', 19), ('Los Angeles', 26), ('Tokyo', 27), ('New York', 28), ('London', 22), ('Beijing', 32)]
c_to_f = lambda: (data[0], (9/5)*data[1] + 32)
list(map(c_to_f, temps))
错误
TypeError: () takes 0 positional arguments but 1 was given
map
函数将temps
的每个元素作为参数传递给c_to_f
将c_更改为\u f
定义,使其包含一个参数:
def c_to_f(data):
return data[0], (9/5)*data[1] + 32
或者干脆做:
list(map(lambda data: (data[0], (9/5)*data[1] + 32), temps))
有没有一种方法可以使用lambda来实现这一点,其他人能够使用lambda地图,就像我上面所说的那样,并且对他们有效。我试图找出我是否做错了什么?是的,但命名lambda函数被认为是不好的风格。lambda表达式的全部要点是,您只需要将某些内容连接在一起,而不需要为其命名函数;如果需要命名函数,只需使用
def
:)我也会举一个例子来说明lambda。谢谢Samwise!