微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法排列和/或重复数学运算 (* / - +)? Python

如何解决有没有办法排列和/或重复数学运算 (* / - +)? Python

我想知道是否有一种方法可以排列数学运算,因为您无法将它们放在列表中(据我所知)。我想解决这个问题

NUMBERMANIA:使用数字 [1,2,9,59,974] 和基本算术运算(+、-、*、/)计算数字 1042。每个号码只能使用一次。

使用代码,我的想法是遍历所有可能的数字排列,这可以通过 itertools 实现,然后将它们放入执行此操作的函数中。

[数字1] [数学运算] [数字2] [数学运算] ... [数学运算] [数字6] 例如 1 * 2 / 9 + 2 / 59 * 974

但数字不必按此顺序排列,数学运算也不必按该顺序或出现的特定频率。

有没有办法用数学运算来做这样的事情?

解决方法

operator 有这样的算术函数可供使用:

<VirtualHost domain2.app.com:443>   
  ProxyPass / https://ip-or-domain.com:444/ 
</VirtualHost>

这意味着您可以创建它们的列表:

import operator as op

op.add(1,2)  # returns 3

然后,可以通过以下方式进行排列:How to generate all permutations of a list?

然后迭代排列,依次应用它们。

,

一种干净的方法可能是将操作字符映射到二进制 lambda 函数:

operations = {
    '+': lambda a,b: a + b,'*': lambda a,b: a * b,...
}

用法:

print(operations['+'](2,59))
print(operations['*'](2,2))

输出:

61
2

对于更端到端的解决方案,您可以考虑一个函数,该函数接受操作数和相应的二元运算符的任意列表,并将操作放在它们之间,然后评估结果。

def substituteAndEval(operands,operations):
    return eval(" {} ".join(str(x) for x in operands).format(*operations))

用法:

numbers = [1,2,9,59,974]
operations = ('+','-','*','/','+')
print(substituteAndEval(numbers[:5],operations))

输出: 2.694915254237288

剩下的工作就是生成和传递随机操作数和操作。

请注意,Python 3+ eval() 从整数除法返回浮点数。您可以用 / 替换除法符号// 以强制除法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?