class Solution:
def evalRPN(self, tokens: List[str]) -> int:
ops = set(['+', '-', '*', '/']) #运算符集合
stack = [] #栈
#用lambda表达式使运算简洁
#注意多个lambda式合并的写法
#注意py3中对负数向下取整,要保留整数位需特殊处理
cal = {"+" : lambda x,y :x+y, "-" : lambda x,y : x-y, "*" : lambda x,y : x*y, "/" : lambda x,y : int(x/y)}
#处理每个字符
for t in tokens:
if t in ops:
num1 = stack.pop()
num2 = stack.pop()
#注意运算顺序
stack.append(cal[t](num2, num1))
else:
stack.append(int(t))
return stack[0]