我正在尝试在此列表的所有单个元素中进行基本乘法,但是在这里使用 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))
此处使用 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)))
参见地图。