为什么list.append返回None?

new*_*ife 5 python

我尝试使用python计算postfix expresion,但它无法工作.我想这可能是一个与python相关的问题,有什么建议吗?

expression = [12, 23, 3, '*', '+', 4, '-', 86, 2, '/', '+']

def add(a,b):
    return a + b
def multi(a,b):
    return a* b
def sub(a,b):
    return a - b
def div(a,b):
    return a/ b


def calc(opt,x,y):
    calculation  = {'+':lambda:add(x,y),
                     '*':lambda:multi(x,y),
                     '-':lambda:sub(x,y),
                     '/':lambda:div(x,y)}
    return calculation[opt]()



def eval_postfix(expression):
    a_list = []
    for one in expression:
        if type(one)==int:
            a_list.append(one)
        else:
            y=a_list.pop()
            x= a_list.pop()
            r = calc(one,x,y)
            a_list = a_list.append(r)
    return content

print eval_postfix(expression)
Run Code Online (Sandbox Code Playgroud)

希望有人可以帮帮我!任何建议都会被批准

fal*_*tru 10

只需更换a_list = a_list.append(r)a_list.append(r).

大多数是改变序列/映射项功能,方法不会返回None:list.sort,list.append,dict.clear...

没有直接关联,但是看看为什么list.sort()没有返回排序列表?.


Max*_*amy 7

该方法append不返回任何内容:

>>> l=[]
>>> print l.append(2)
None
Run Code Online (Sandbox Code Playgroud)

你不能写:

l = l.append(2)
Run Code Online (Sandbox Code Playgroud)

但简单地说:

l.append(2)
Run Code Online (Sandbox Code Playgroud)

在您的示例中,替换:

a_list = a_list.append(r)
Run Code Online (Sandbox Code Playgroud)

a_list.append(r)
Run Code Online (Sandbox Code Playgroud)


小智 6

对于附加使用的返回数据:

b = []   
a = b.__add__(['your_data_here'])
Run Code Online (Sandbox Code Playgroud)