如何将事物“添加”在一起python

时间:2012-09-21 12:31:01

标签: python

我写了这样一个函数,op给出了一个像'+','-','*','/'或更多的操作符号,代码“添加”所有使用给定运算符的东西,

以下是代码:

def arithmetic(op,*args):
  result = args[0]
    for x in args[1:]:
       if op =='+':
           result += x
       elif op == '-':
           result -= x
       elif op == '*':
           result *= x
       elif op == '/':
           result /= x
  return result

有没有办法直接使用+,-,*,/?所以我不必写一个If-Else语句?

4 个答案:

答案 0 :(得分:10)

您可以使用相应的operators

import operator
def arithmetic(opname, *args):
    op = {'+': operator.add,
          '-': operator.sub,
          '*': operator.mul,
          '/': operator.div}[opname]
    result = args[0]
    for x in args[1:]:
       result = op(result, x)
    return result

或更短,reduce

import operator,functools
def arithmetic(opname, arg0, *args):
    op = {'+': operator.add,
          '-': operator.sub,
          '*': operator.mul,
          '/': operator.div}[opname]
    return functools.reduce(op, args, arg0)

答案 1 :(得分:3)

我认为您正在寻找与reduce结合的内置operator功能:

import operator
a = range(10)
reduce(operator.add,a) #45
reduce(operator.sub,a) #-45
reduce(operator.mul,a) #0 -- first element is 0.
reduce(operator.div,a) #0 -- first element is 0.

当然,如果您想使用字符串执行此操作,可以使用dict将字符串映射到操作:

operations = {'+':operator.add,'-':operator.sub,} # ...
然后它变成了:

reduce(operations[your_operator],a)

答案 2 :(得分:1)

对于+运算符,您具有内置的sum函数。

答案 3 :(得分:-1)

您可以使用exec:

def arithmetic(op, *args):
 result = args[0]
 for x in args[1:]:
   exec('result ' + op + '= x')
 return result