为什么list.append()返回None?

我正在尝试使用Python计算后缀表达式,但是它不起作用。我认为这可能是与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)


慕标5832272
浏览 1192回答 3
3回答

守着一只汪

只需替换a_list = a_list.append(r)为a_list.append(r)。大多数是改变序列/映射项功能,方法不会返回None:list.sort,list.append,dict.clear...没有直接关系,但是请参见为什么list.sort()不返回排序后的列表?。

慕斯709654

该方法append不返回任何内容:>>> l=[]>>> print l.append(2)None您不得写:l = l.append(2)但简单地说:l.append(2)在您的示例中,替换为:a_list = a_list.append(r)至a_list.append(r)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python