Python:使用列表中的运算符的数学运算

DW_*_*505 3 python math list operators

假设我有一个包含数学运算符的列表,就像这样

operators = ['+','-','*','/']
Run Code Online (Sandbox Code Playgroud)

而且我从这里开始随机操作,就像这样

op = random.choice(operators)
Run Code Online (Sandbox Code Playgroud)

如果我取两个数字,比如4和2,我怎样才能让Python用数字进行数学运算(名为'op')?

Wil*_*sem 7

您最好不要将运算符指定为文本.只需使用lambda表达式operator模块:

import operator
import random

operators = [operator.add,operator.sub,operator.mul,operator.floordiv]
op = random.choice(operators)
Run Code Online (Sandbox Code Playgroud)

然后,您可以op使用两个参数调用它,例如:

result = op(2,3)
Run Code Online (Sandbox Code Playgroud)

例如:

>>> import operator
>>> import random
>>> 
>>> operators = [operator.add,operator.sub,operator.mul,operator.floordiv]
>>> op = random.choice(operators)
>>> op
<built-in function sub>
>>> op(4,2)
2
Run Code Online (Sandbox Code Playgroud)

所以你可以看到,random选择了sub运算符,所以它减去24.

如果你想定义一个不受支持的函数operator等,你可以使用lambda表达式,如:

operators = [operator.add,lambda x,y:x+2*y]
Run Code Online (Sandbox Code Playgroud)

所以在这里你指定了一个接受参数xy计算的函数x+2*y(当然你可以自己定义一个任意表达式).