最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)處理逆波蘭表達式示例

 更新時間:2018年07月30日 14:23:15   作者:混沌鱷魚  
這篇文章主要介紹了Python實現(xiàn)處理逆波蘭表達式操作,結(jié)合實例形式分析了逆波蘭表達式的概念、原理及Python針對逆波蘭表達式的定義與計算相關(guān)操作技巧,需要的朋友可以參考下

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

中文名: 逆波蘭表達式

外文名: Reverse Polish Notation

別名: 后綴表達式

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

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

在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]

運算結(jié)果:

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]

運算結(jié)果:

-3

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程

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

相關(guān)文章

最新評論

嘉义市| 清镇市| 平远县| 卢湾区| 曲阜市| 易门县| 梅河口市| 建宁县| 芮城县| 日土县| 阿拉善左旗| 马鞍山市| 万宁市| 陕西省| 偏关县| 乌拉特后旗| 广灵县| 乡宁县| 轮台县| 大关县| 云安县| 天全县| 兴安县| 杨浦区| 津南区| 银川市| 谢通门县| 通城县| 读书| 弥勒县| 嘉禾县| 方山县| 始兴县| 宜兰县| 沭阳县| 威海市| 禄丰县| 河北省| 泰来县| 诸暨市| 富裕县|