第十三天-迭代器、三元表达、字典生成式、生成器、递归
生活随笔
收集整理的這篇文章主要介紹了
第十三天-迭代器、三元表达、字典生成式、生成器、递归
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、迭代器
迭代器:迭代的工具。
迭代也可以說是重復,每一次的結果都是基于上一次的結果來的。
- 可迭代對象:
總結:
只要擁有_ _ iter_ _方法的對象就是可迭代對象
python內置字符串/列表/元祖/字典/集合/文件 都是可迭代對象
- 迭代器對象
總結:
迭代器對象:執行可迭代對象的__iter__方法,拿到的返回值就是迭代器對象。
for循環原理
for循環稱為迭代器循環,in后必須是可迭代的對象。
二、三元表達式(三目表達式)
條件成立時的返回值if條件else條件不成立時的返回值。
dog_name='xiaogou' if dog_name=='fenggou'print('遠離他') else:print('盤') ------------------------>> print('遠離他') if dog_name=='fenggou'else print('盤他')- 不推薦使用,寫程序的易懂,變得簡單
三、列表推導式
lis=[] for i in range(100):lis.append(i) print(lis) lis = [i*2 for i in range(100)] print(lis) lis1 = [i * 2 if i > 50 else i for i in range(100)] print(lis1)四、字典生成式
dic=dict.fromkeys([1,2,3,4],2) print(dic) # {1: 2, 2: 2, 3: 2, 4: 2} dic={i:i**2 for i in range(10)} for i in dic.items():print(i) ##(0, 0)(1, 1)(2, 4)(3, 9)(4, 16)(5, 25)(6, 36)(7, 49)(8, 64)(9, 81)拉鏈函數 zip()方法,通過解壓縮函數生成一個字典。
res=zip('abcd',[1,2,3,4]) dic=dict() for k,v in resdic[k]=v print(dic) {'a': 1, 'b': 2, 'c': 3, 'd': 4} print({k:v for k,v in zip('abcd',[1,2,3,4])}) {'a': 1, 'b': 2, 'c': 3, 'd': 4}五、生成器:自定義的迭代器
生成器提供了非常方便的自定義迭代器的途徑。
- yield關鍵字:接收值,但不會結束函數,而是繼續運行下一個代碼
總結:
yield:
yield和return:
相同點:兩者都是在函數內部使用,都可以返回值,并且返回值沒有類型和個數的限制
不同點:return只能返回一次之;yield可以返回多次值
- 生成器表達式
- 把列表推倒式的[]換成()就是生成器表達式
- 優點:省內存,一次只產生一個值在內存中
六、遞歸
def f2();print('from f2')==遞歸:函數調用函數自己,類似于循環,但是這個循環必須得有結束條件==
- 直接調用:直接在函數內部調用函數自身
- 間接調用:不在原函數體內調用函數,而是通過其他的方法間接調用函數自身
遞歸必須要有兩個明確的階段:
遞歸的精髓在于通過不斷地重復逼近一個最終的結果。
轉載于:https://www.cnblogs.com/zhuyuanying123--/p/10969932.html
總結
以上是生活随笔為你收集整理的第十三天-迭代器、三元表达、字典生成式、生成器、递归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓中的消息循环机制Handler及Lo
- 下一篇: fstream之seekp/seekg/