【问题标题】:Parsing a string input into a lambda function (Python)将字符串输入解析为 lambda 函数(Python)
【发布时间】:2016-11-27 12:25:40
【问题描述】:

如何将字符串输入解析为适当的形式,以便在 lambda 函数中作为映射规则执行?

 fx=type(input("Enter a polynomial: "))

这是我的输入,我想输入任意多项式。

f= lambda x: fx

现在我希望我的 lambda 函数能够执行来自输入函数的字符串,就像它们是正常的映射规则一样,例如 x**2。

【问题讨论】:

  • 你的问题不清楚。你的意思是要输入一个代表多项式的字符串并将其存储在变量fx 中,然后将其解析为可以更容易评估的新字符串格式?或者您是否想要一个评估该字符串并可以在另一个 lambda 函数中使用的函数?或者是其他东西?我希望你意识到你写的 lambda 表达式是没有意义的。
  • fx 将始终为 str,除非您使用的是 Python 2.x。
  • 是的,我想做第二个选项。表达式是更大程序的一部分,这只是导致我遇到问题的部分

标签: python input lambda type-conversion


【解决方案1】:

首先,input() 在 Python 2 和 Python 3 中的行为不同,如this 答案中所述。

eval() 是最简单的选项之一:

Python 3

>>> fx = input("Enter a polynomial: ")
Enter a polynomial: x**2 + 2*x + 1
>>> f = lambda x: eval(fx)
>>> f(1)
4

Python 2

>>> fx = raw_input("Enter a polynomial: ")
Enter a polynomial: x**2 + 2*x + 1
>>> f = lambda x: eval(fx)
>>> f(1)
4

不过要小心,因为eval() 可以执行任意代码。

【讨论】:

    猜你喜欢
    • 2012-11-11
    • 1970-01-01
    • 2021-05-03
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2021-09-19
    相关资源
    最近更新 更多