为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕标5832272 2019-12-06 12:37:55
我正在尝试使用Python计算后缀表达式,但是它不起作用。我认为这可能是与Python相关的问题。有什么建议么?expression = [12, 23, 3, '*', '+', 4, '-', 86, 2, '/', '+']def add(a,b):    return a + bdef multi(a,b):    return a* bdef sub(a,b):    return a - bdef div(a,b):    return a/ bdef 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 contentprint eval_postfix(expression)
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

只需替换a_list = a_list.append(r)为a_list.append(r)。


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


没有直接关系,但是请参见为什么list.sort()不返回排序后的列表?。


查看完整回答
反对 回复 2019-12-06
?
慕斯709654

TA贡献1840条经验 获得超5个赞

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


>>> l=[]

>>> print l.append(2)

None

您不得写:


l = l.append(2)

但简单地说:


l.append(2)

在您的示例中,替换为:


a_list = a_list.append(r)


a_list.append(r)


查看完整回答
反对 回复 2019-12-06
  • 3 回答
  • 0 关注
  • 1190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信