operators as variables
James Stroud
jstroud at mbi.ucla.edu
Sat Dec 6 22:15:12 EST 2008
> macc_200 wrote:
>> Hi,
>> just starting programming and have an elementary question after
>> playing around with lists but cannot find the answer with googling.
>> I have a list of variables and I would like some of those variables to
>> be integers and some to be operators so the list would look something
>> like [5 * 4 - 4 + 6] and then be able to evaluate the result (i.e. get
>> 10). How do you make the interpreter see the operator as that instead
>> of a string and just echo the list back to me.
Your specification is ambiguous because you mention lists but wrote an
evaluable expression inside of brackets. Others have answered the
question you probably really are asking. For fun, though, I'm going to
pretend you meant "list" and not whatever [5 * 4 - 4 + 6] is:
import operator
opdict = {'+' : operator.add,
'-' : operator.sub,
'*' : operator.mul,
'/' : operator.div}
def take_two(aniterable):
assert len(aniterable) % 2 == 0
aniter = iter(aniterable)
while True:
try:
yield aniter.next(), aniter.next()
except StopIteration:
break
def reductifier(alist):
value = alist.pop(0)
for op, operand in take_two(alist):
value = opdict[op](value, operand)
return value
reductifier([5, "*", 4, "-", 4, "+", 6])
More information about the Python-list
mailing list