在Python中对Lambda使用Map函数: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',

系统:WIN10

IDE:MS VSCode

语言:Python版本3.7.3

库:熊猫1.0.1版

数据源:下面提供的基础数据

数据集:下面提供的基础数据

在尝试使用“map”函数映射转换器函数(我使用lambda构建)以遍历样本温度列表时,由于某种原因,我遇到了一个问题。下面提供了示例代码,它不断抛出以下错误:TypeError:()接受0个位置参数,但给出了1个

已采取步骤:

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!