首页 > 解决方案 > 如何在 Python 中将 '+' 转换为 +

问题描述

我愿意制作一个程序来评估一组长度为 6 的正整数(例如: [1, 6, 3, 9, 2, 9] )上所有可能的操作组合( + , - , * , / ) .

为此,我正在使用列表

symbols = ['+', '-', '*', '/']

并编写了一个嵌套循环来创建所有可能性

+ + + + +
+ + + + -
.
.
.
/ / / / *
/ / / / /

通过调用每一行(例如:+ - + * / )一个主题,并且 M 是所有主题的集合,其中

M[0] = ['+', '+', '+', '+', '+']
M[1] = ['+', '+', '+', '+', '-']

等等。我现在的目标是编写一个函数

evaluate_expression(motif, a, b, c, d, e, f)

吐出表达式 a 主题 [0] b 主题 [1] c 主题 [2] d 主题 [3] e 主题 [4] f 的结果

我的想法是尝试将“+”转换为符号+,但我找不到办法,我希望你们中的一些人知道如何做到这一点,我愿意接受任何修改建议这个清洁工。

标签: pythonlisttypes

解决方案


运算符库为您提供基本运算符的函数(例如add(), sub()

因此,您可以将您的替换symbols = ['+', '-', '*', '/']为:

from operator import add, sub, mul, truediv
symbols = [add, sub, mul, truediv]

现在你的主题生成函数应该制作函数列表而不是字符串列表。

然后,假设您有一个motif列表,当您调用它时(检查itertools.combinations_with_replacement()生成所有图案的函数),您可以通过执行以下操作来应用它:

motif = [add, add, sub]
values = [5, 6, 7, 8]
 
result = values[0]
for i, current_func in enumerate(motif):
    result = current_func(result, value[i+1])

print(result)

注意:此方法考虑操作顺序,它将按从左到右的顺序应用函数。


推荐阅读