Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算方程的可能组合_Python - Fatal编程技术网

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]))