python - 从字符串序列创建 Python lambda 函数

标签 python string python-3.x function lambda

我有一个包含 m 个元素的列表和 n 个出现在字符串列表中的不同数字。该列表遵循以下格式示例

eq = ['12', '2', '3', '-123', '-1', 'X']

请注意,X 表示常量 1,而不是变量 1。我希望能够将其转换为一个 lambda 函数,该函数接受一个列表 x 并像将这个列表加在一起一样工作。对于我们的示例,函数将是

f(x) = x[1]*x[2] + x[2] + x[3] - x[1]*x[2]*x[3] - x[1] + 1

我知道如何使用普通函数执行此操作,但我想让它与 lambda 一起工作,但碰壁了。任何帮助,将不胜感激!

这是解决问题的函数:

def evaluateList(x, lst):
    num = 0
    for term in lst:
        if term[0] == "X":
            num += 1
        elif term[0] == "-":
            num -= reduce(lambda x,y: x*y, [x[int(y)-1] for y in term[1:]])
        else:
            num += reduce(lambda x,y: x*y, [x[int(y)-1] for y in term])
    return num

最佳答案

我认为这很简单:

from operator import mul
from functools import reduce
prod = lambda L: reduce(mul, L, 1)
evaluateList = lambda(x, eq): sum(
    1 if expr == 'X' 
    else prod(-1 if i == '-' 
              else x[int(i)] 
              for i in expr) 
    for expr in eq)

关于python - 从字符串序列创建 Python lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51003389/

相关文章:

Python 井字游戏错误 : TypeError: 'function' object is not subscriptable

python - 将商品添加到购物车时是否应该使用 WTForms 作为按钮?

python - ctypes.cast 总是抛出 ArgumentError

python - 如何描述一个Python对象,属性、身份、类型和值之间的关系是什么?

Python:将 SELECT 查询列表转换为字典

windows - 批处理文件字符串修改

java - 正则表达式替换标签之间的所有逗号

string - 删除模式之后的所有内容,包括模式

python - 使用顺序初始化参数的多进程池初始化

python-3.x - Python 的 unittest 和 unittest2 模块有什么区别?