编写递归下降语法分析器_Python3知识点流程控制、迭代器、生成器快速入门
流程控制
if 控制
if?表達式1:????語句if?表達式2:
????????語句elif?表達式3:
????????語句else:
????????語句elif?表達式4:
????語句else:
????語句
1、每個條件后面要使用冒號?:,表示接下來是滿足條件后要執行的語句塊。
2、使用縮進來劃分語句塊,相同縮進數的語句在一起組成一個語句塊。
3、在 Python 中沒有 switch - case 語句。
三元運算符:
if else編寫條件語句時,應該盡量避免使用嵌套語句。嵌套語句不便于閱讀,而且可能會忽略一些可能性。
for 遍歷
for in :? ?else:
? ?
else 語句中的語句2只有循環正常退出(遍歷完所有遍歷對象中的值)時執行。
在字典中遍歷時,關鍵字和對應的值可以使用?items()?方法同時解讀出來:
knights?=?{'gallahad':?'the?pure',?'robin':?'the?brave'}for?k,?v?in?knights.items():print(k,?v)在序列中遍歷時,索引位置和對應值可以使用?enumerate()?函數同時得到:
for?i,?v?in?enumerate(['tic',?'tac',?'toe']):print(i,?v)同時遍歷兩個或更多的序列,可以使用?zip()?組合:
questions?=?['name',?'quest',?'favorite?color']answers?=?['lancelot',?'the?holy?grail',?'blue']for?q,?a?in?zip(questions,?answers):print('What?is?your?{0}???It?is?{1}.'.format(q,?a))
要反向遍歷一個序列,首先指定這個序列,然后調用?reversed()?函數:
for?i?in?reversed(range(1,?10,?2)):print(i)要按順序遍歷一個序列,使用?sorted()?函數返回一個已排序的序列,并不修改原值:
basket?=?['apple',?'orange',?'apple',?'pear',?'orange',?'banana']for?f?in?sorted(set(basket)):print(f)while 循環
while:? ?else:
? ?
break、continue、pass
break 語句用在 while 和 for 循環中,break 語句用來終止循環語句,即循環條件沒有 False 條件或者序列還沒被完全遞歸完,也會停止執行循環語句。
continue 語句用在 while 和 for 循環中,continue 語句用來告訴 Python 跳過當前循環的剩余語句,然后繼續進行下一輪循環。continue 語句跳出本次循環,而 break 跳出整個循環。
pass 是空語句,是為了保持程序結構的完整性。pass 不做任何事情,一般用做占位語句。
迭代器
迭代器是一個可以記住遍歷的位置的對象。
迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退。
迭代器有兩個基本的方法:iter()?和?next()。
字符串,列表或元組對象都可用于創建迭代器。
迭代器可以被 for 循環進行遍歷:
li?=?[1,?2,?3]it?=?iter(li)
for?val?in?it:
????print(val)
迭代器也可以用 next() 函數訪問下一個元素值:
import?sysli?=?[1,2,3,4]
it?=?iter(li)while?True:try:print?(next(it))except?StopIteration:
????????sys.exit()
生成器
在 Python 中,使用了 yield 的函數被稱為生成器(generator)。
跟普通函數不同的是,生成器是一個返回迭代器的函數,只能用于迭代操作,更簡單點理解生成器就是一個迭代器。
在調用生成器運行的過程中,每次遇到 yield 時函數會暫停并保存當前所有的運行信息,返回 yield 的值, 并在下一次執行 next() 方法時從當前位置繼續運行。
調用一個生成器函數,返回的是一個迭代器對象。
????a,?b,?counter?=?0,?1,?0while?True:if?(counter?>?n):?returnyield?a
????????a,?b?=?b,?a?+?b
????????counter?+=?1
f?=?fibonacci(10)?#?f?是一個迭代器,由生成器返回生成while?True:try:
????????print(next(f))except?StopIteration:
????????sys.exit()
end...未完待續
往期推薦
Python3基本數據類型快速入門
Python3基礎語法快速入門
30個極簡Python代碼,即學即用
WebSocket協議
你聽說過python陷阱么?
點擊“閱讀原文”,領取 2020 年最新免費技術資料大全
↓↓↓總結
以上是生活随笔為你收集整理的编写递归下降语法分析器_Python3知识点流程控制、迭代器、生成器快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python字符串出现次数最多的_pyt
- 下一篇: mq同步mysql数据 duplicat