Python 计算方程的可能组合
我有一个方程的模板Python 计算方程的可能组合,python,Python,我有一个方程的模板template=(a op b)op c,其中可用的操作op如下:op=['+','-','/','*'] 我想做的是使用运算op和参数a、b和c计算这个方程的所有可能组合 e、 g 我看了一下itertools.compositions,但是我不太确定在这个特定的上下文中是否(或如何)使用这个函数 这就是您想要的: import itertools symbol = ['a', 'b', 'c'] op = ['+', '-', '/', '*'] for symbol
template=(a op b)op c
,其中可用的操作op
如下:op=['+','-','/','*']
我想做的是使用运算op
和参数a
、b
和c
计算这个方程的所有可能组合
e、 g
我看了一下
itertools.compositions
,但是我不太确定在这个特定的上下文中是否(或如何)使用这个函数 这就是您想要的:
import itertools
symbol = ['a', 'b', 'c']
op = ['+', '-', '/', '*']
for symbols in itertools.permutations(symbol):
for ops in itertools.product(op, repeat=2):
print "(%s %s %s) %s %s" % (
symbols[0], ops[0], symbols[1], ops[1], symbols[2])
你需要三样东西:
- 三个变量的排列:(a,b,c),(a,c,b),(b,c,a)等等
- 操作集的笛卡尔积及其自身:(*,-),(,+),(+,-),(+,-),(+,+,+)等
- 变量排列与上一个乘积之间的笛卡尔乘积
itertools
:
import itertools as it
vars = 'abc'
ops = '+-/*'
vars_permutations = it.permutations(vars)
op_permutations = it.product(ops, repeat=2)
for var, op in it.product(vars_permutations, op_permutations):
print('({} {} {}) {} {}'.format(var[0], op[0], var[1], op[1], var[2]))
把你的代码,你已经尝试过的。这将清除More,通过使用字符串连接构建所有可能性,然后逐个解析。请看,您想要的是运算符的笛卡尔积,而不是组合
itertools.product(op,repeat=2)
生成这些。
import itertools as it
vars = 'abc'
ops = '+-/*'
vars_permutations = it.permutations(vars)
op_permutations = it.product(ops, repeat=2)
for var, op in it.product(vars_permutations, op_permutations):
print('({} {} {}) {} {}'.format(var[0], op[0], var[1], op[1], var[2]))