python - 如何在 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 的结果
我的想法是尝试将“+”转换为符号+,但我找不到办法,我希望你们中的一些人知道如何做到这一点,我愿意接受任何修改建议这个清洁工。
解决方案
运算符库为您提供基本运算符的函数(例如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)
注意:此方法不考虑操作顺序,它将按从左到右的顺序应用函数。
推荐阅读
- splunk - 如何在 Splunk 中查找与模式不匹配的所有事件?
- android - adb 无法在 mac 中检测到 Pixel 2
- javascript - 查找最后一个孩子是否在 keydown 上有特定的类
- typescript - 如何在 TypeScript 脚本中声明预先存在的变量?
- actions-on-google - 如何在我的网站上部署 API.AI(对话流)机器人?
- powershell - 对列表使用 for 循环并将元素设置为环境变量,然后获取值
- mysql - 更新无符号 INT 失败,MySQL 上的值较低
- php - 获取嵌套对象中具有自动关系的所有属性
- python - pandas:根据时间间隔加入数据帧
- c# - 无法读取第三级 XML