91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python實現處理逆波蘭表達式示例

發布時間:2020-10-11 08:13:02 來源:腳本之家 閱讀:216 作者:混沌鱷魚 欄目:開發技術

本文實例講述了Python實現處理逆波蘭表達式。分享給大家供大家參考,具體如下:

中文名: 逆波蘭表達式

外文名: Reverse Polish Notation

別名: 后綴表達式

逆波蘭表達式又叫做后綴表達式。在通常的表達式中,二元運算符總是置于與之相關的兩個運算對象之間,這種表示法也稱為中綴表示。波蘭邏輯學家J.Lukasiewicz于1929年提出了另一種表示表達式的方法,按此方法,每一運算符都置于其運算對象之后,故稱為后綴表示。這個知識點在數據結構和編譯原理這兩門課程中都有介紹。它的優勢在于只用兩種簡單操作,入棧和出棧就可以搞定任何普通表達式的運算。其運算方式如下:

如果當前字符為變量或者為數字,則壓棧,如果是運算符,則將棧頂兩個元素彈出作相應運算,結果再入棧,最后當表達式掃描完后,棧里的就是結果。

在Python2中的處理方法:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
RPN_str = '1 2 + 3 4 - *'
stack = []
for c in RPN_str.split():
  if c in '+-*':
    i2 = stack.pop()
    i1 = stack.pop()
    print i1,c,i2
    print eval('%s'*3 % (i1,c,i2))
    stack.append(eval('%s'*3 % (i1,c,i2)))
  else:
    stack.append(c)
print 'result', stack[0]

運算結果:

1 + 2
3
3 - 4
-1
3 * -1
-3
result -3

當然還有更Hacker一些的寫法:

復制代碼 代碼如下:

RPN_str = '1 2 + 3 4 - *'
print reduce(lambda stack, c: stack+[eval('{2}{1}{0}'.format(stack.pop(),c,stack.pop()))] if c in '+-*' else stack+[c], RPN_str.split(),[])[0]

運算結果:

-3

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖远县| 辛集市| 资源县| 渑池县| 盐边县| 旅游| 榆中县| 塔城市| 台江县| 东源县| 连云港市| 融水| 大冶市| 乌兰察布市| 疏附县| 桐柏县| 和龙市| 海晏县| 上犹县| 溆浦县| 年辖:市辖区| 冷水江市| 德阳市| 遂宁市| 陆丰市| 中山市| 阆中市| 商水县| 江陵县| 通州市| 射阳县| 澳门| 抚远县| 隆尧县| 石台县| 铁岭市| 安顺市| 拉孜县| 汕头市| 商河县| 辛集市|