使用 lambda 执行基本乘法

问题描述 投票:0回答:1

我正在尝试在此列表的所有单个元素中进行基本乘法,但是在这里使用 lambda 表达式哪里出了问题?

inputData = [[2, 3], ["4", 7], [6, 4], [222, 25, 7], ["16", 22, "12", 6]]

我想复制的代码:

for element in inputData:
    value = 1
    for multi in element:
        if isinstance(multi, str):
            multi = int(multi)
        value = value * multi
    print(value)

我正在尝试的代码:

for element in inputData:
    value = 1
    for multi in element:
        multiplication = lambda multi: int(multi) * value if isinstance(multi, str) == True else multi * value
    print(multiplication(inputData))
python lambda
1个回答
0
投票

此处使用 lambda 的主要原因是这样您可以将其传递给高阶函数,即 reduce:

import functools

for element in inputData:
    print(functools.reduce(lambda a, b: a * int(b), element, 1))

但实际上,由于

int
和乘法是预定义函数,因此您实际上并不需要 lambda:

import functools
import operator

for element in inputData:
    print(functools.reduce(operator.mul, map(int, element)))

参见地图

© www.soinside.com 2019 - 2024. All rights reserved.