摘要:作者心葉時(shí)間此處長(zhǎng)期維護(hù)一些對(duì)幫助快速使用的一些基礎(chǔ)語(yǔ)法,方便日常算法練習(xí)使用??刂普Z(yǔ)法語(yǔ)句可以跳出和的循環(huán)體。迭代器有兩個(gè)基本的方法和,這點(diǎn)也很類似字符串,列表或元組對(duì)象都可用方法創(chuàng)建迭代器對(duì)象。并在下一次執(zhí)行方法時(shí)從當(dāng)前位置繼續(xù)運(yùn)行。
作者:心葉
時(shí)間:2018-04-23 22:18
此處長(zhǎng)期維護(hù)一些對(duì)幫助快速使用python3的一些基礎(chǔ)語(yǔ)法,方便日常算法練習(xí)使用。
控制語(yǔ)法break 語(yǔ)句可以跳出 for 和 while 的循環(huán)體。如果你從 for 或 while 循環(huán)中終止,任何對(duì)應(yīng)的循環(huán) else 塊將不執(zhí)行。
continue語(yǔ)句被用來告訴Python跳過當(dāng)前循環(huán)塊中的剩余語(yǔ)句,然后繼續(xù)進(jìn)行下一輪循環(huán)。
if條件控制if 表達(dá)式: 語(yǔ)句 if 表達(dá)式: 語(yǔ)句 elif 表達(dá)式: 語(yǔ)句 else: 語(yǔ)句while循環(huán)
Python中沒有do..while循環(huán)
while 判斷條件: 語(yǔ)句 else: 語(yǔ)句for語(yǔ)句
forrange()函數(shù)in : else:
這個(gè)函數(shù)不得不提,為什么滴?因?yàn)樵趯?shí)際用python練習(xí)算法題目時(shí),這個(gè)函數(shù)真的用的太頻繁了。
print(list(range(5,9))) #[5, 6, 7, 8] for i in range(5):print(i,end=" ") #0 1 2 3 4 for i in range(1,3):print(i,end=" ") #1 2 for i in range(0, 10, 3):print(i,end=" ") #0 3 6 9 for i in range(-10, -100, -30):print(i,end=" ") #-10 -40 -70迭代器與生成器 迭代器
迭代器是什么東西?哈哈,有沒有想起java中集合的方法iterator()返回迭代器?是的,就是類似這個(gè)的存在。
迭代器有兩個(gè)基本的方法:iter() 和 next(),這點(diǎn)也很類似java(字符串,列表或元組對(duì)象都可用iter()方法創(chuàng)建迭代器對(duì)象)。
下面先簡(jiǎn)單演示一下這二個(gè)方法的用法:
list=["中國(guó)","美國(guó)","俄羅斯","埃塞俄比亞"] #1.使用iter()方法獲取迭代器對(duì)象 it = iter(list) #2.使用next()方法依次獲取數(shù)據(jù) print (next(it)) #打印結(jié)果是"中國(guó)" print (next(it)) #打印結(jié)果是"美國(guó)"
上面的例子應(yīng)該已經(jīng)明白這二個(gè)方法的用法了,使用iter()方法獲取迭代器對(duì)象,再用next(it)方法依次獲取集合的數(shù)據(jù)。
當(dāng)然,到末尾了已經(jīng)沒有可以取的數(shù)據(jù)的時(shí)候,再次調(diào)用會(huì)拋出異常,因此我們可以借助這個(gè)來實(shí)現(xiàn)迭代全部的數(shù)據(jù),如下:
list=["中國(guó)","美國(guó)","俄羅斯","埃塞俄比亞"] it = iter(list) flag=True; while flag: try: print (next(it)) except StopIteration: print ("迭代結(jié)束了",end=" ") flag=False
除此之外,使用for可以實(shí)現(xiàn)類似的效果,如下:
list=["中國(guó)","美國(guó)","俄羅斯","埃塞俄比亞"] it = iter(list) for x in it: print (x, end=" ") #"中國(guó)","美國(guó)","俄羅斯","埃塞俄比亞"
因此,迭代全部的數(shù)據(jù)肯定不是迭代器存在的全部意義,更多的時(shí)候,你可以把它看成一個(gè)管理一列數(shù)據(jù)的對(duì)象,需要的時(shí)候告訴他一下,他就會(huì)給你下一個(gè)數(shù)據(jù),不像for循環(huán)那樣一下子迭代結(jié)束,你可以在任何需要的時(shí)候獲取下一個(gè)數(shù)據(jù)。
記住這一個(gè)特點(diǎn),特別是在設(shè)計(jì)算法或者模式的時(shí)候,會(huì)很有用的(當(dāng)然,具體用好他從來都是經(jīng)驗(yàn)的事情,祝你好運(yùn))。
生成器TS或者ES6+有所了解的人應(yīng)該都知道yield函數(shù),基本上和這里的差不多用法。
在調(diào)用生成器運(yùn)行的過程中,每次遇到 yield 時(shí)函數(shù)會(huì)暫停并保存當(dāng)前所有的運(yùn)行信息,返回yield的值。并在下一次執(zhí)行 next()方法時(shí)從當(dāng)前位置繼續(xù)運(yùn)行。
上面的說法可能有點(diǎn)不好理解,ok,下面用大白話說一下:
生成器就是一個(gè)可以自定義一個(gè)生成迭代器對(duì)象函數(shù)的概念,生成的迭代器對(duì)象每次被詢問返回下一個(gè)數(shù)據(jù)的時(shí)候,自定義的如果返回,使用的就是yield函數(shù),先看下下面的例子:
#定義一下可以生成迭代器對(duì)象的函數(shù),類似上面例子中的iter()方法 def generatorDemo(array): index=0 while(index因此,你可以從二個(gè)角度來理解生成器:
1.一個(gè)和迭代器配合使用的迭代器對(duì)象生成方法;
2.更本質(zhì)的理解:yield類似return,可以返回?cái)?shù)據(jù),不過不同的是,可以多次返回?cái)?shù)據(jù),調(diào)用一下返回一下,再次調(diào)用返回下一個(gè)yield定義返回?cái)?shù)據(jù)的地方,就如同上面的例子,直到y(tǒng)ield語(yǔ)句全部完畢再次調(diào)用會(huì)拋出錯(cuò)誤。
如果你問我什么時(shí)候使用他,這具體看業(yè)務(wù)需求,就好比if語(yǔ)句一樣,他就在那里,需要用的時(shí)候可以記起來他,就夠了。
函數(shù)具體就不用多說明了,直接給出定義,然后說幾個(gè)重要的問題。
def 函數(shù)名(參數(shù)列表): 函數(shù)體參數(shù)傳遞在 python 中,strings, tuples, 和 numbers 是不可更改的對(duì)象,而 list,dict 等則是可以修改的對(duì)象。
函數(shù)中傳遞參數(shù)的時(shí)候,不可更改的對(duì)象和可以修改的對(duì)象在操作影響上是有很大區(qū)別的,用一句話說明的話就是:不可更改的對(duì)象類似傳遞的是值,可以修改的對(duì)象傳遞的是"指針",也就是引用傳遞,應(yīng)該可以感受出來區(qū)別了吧。
python 中一切都是對(duì)象,嚴(yán)格意義我們不能說值傳遞還是引用傳遞,我們應(yīng)該說傳不可變對(duì)象和傳可變對(duì)象。
參數(shù)參數(shù)有四點(diǎn),具體的很多和ES很像,不過在第一點(diǎn)上和ES區(qū)別很大,下面來簡(jiǎn)單說明一下:
1.必需參數(shù):就是你定義函數(shù)的時(shí)候,定義了幾個(gè)參數(shù),調(diào)用的時(shí)候就要傳遞幾個(gè),當(dāng)然是普通定義方法,不包括下面的不定長(zhǎng)參數(shù),這點(diǎn)ES就很隨意了;
2.關(guān)鍵字參數(shù):舉個(gè)例子,比如你定義了一個(gè)函數(shù)有二個(gè)參數(shù)age和name,函數(shù)名稱是getInfo,正常調(diào)用是依次傳遞參數(shù):getInfo(7,"yelloxing"),當(dāng)然你可以不這樣,你還可以這樣:
getInfo(name="yelloxing",age=7);3.默認(rèn)參數(shù):這個(gè)就和ES6差不多意思,舉例,定義函數(shù)時(shí)(沒有寫全,值寫函數(shù)頭部):
getInfo(age,name="默認(rèn)名稱");4.不定長(zhǎng)參數(shù):定義方法:getInfo(age,name,*vartuple),這樣多傳遞的數(shù)據(jù)就全部在vartuple中,調(diào)用前它是一個(gè)空元組。
別的更多細(xì)節(jié)說明就到此為止,如果后續(xù)有必要再添加或多帶帶整理,此時(shí)的已經(jīng)夠用了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41570.html
摘要:布爾值布爾值和布爾代數(shù)的表示完全一致,一個(gè)布爾值只有兩種值的數(shù)據(jù)類型可以通過內(nèi)置的函數(shù)查詢,例如還可以用來判斷和的區(qū)別在于不會(huì)認(rèn)為子類是一種父類類型。會(huì)認(rèn)為子類是一種父類類型?;竟δ苁沁M(jìn)行成員關(guān)系測(cè)試和刪除重復(fù)元素。 ...
摘要:該系列文章入門,編程基礎(chǔ)概念介紹變量,條件,函數(shù),循環(huán)中的數(shù)據(jù)類型,,,,在中創(chuàng)建對(duì)象學(xué)一門編程語(yǔ)言正在變得越來越容易,只要念過高中甚至是初中小學(xué),能熟練聊和懂得一點(diǎn)點(diǎn)軟件的人,入門一門編程語(yǔ)言都不在話下。 該系列文章: 《python入門,編程基礎(chǔ)概念介紹(變量,條件,函數(shù),循環(huán))》 《python中的數(shù)據(jù)類型(list,tuple,dict,set,None)》 《在python...
摘要:年月宣布支持時(shí)間延長(zhǎng)到年。更詳細(xì)的發(fā)布列表參閱官網(wǎng)的版本號(hào)分為三段,形如。其中表示大版本號(hào),一般當(dāng)整體重寫,或出現(xiàn)不向后兼容的改變時(shí),增加表示功能更新,出現(xiàn)新功能時(shí)增加表示小的改動(dòng)如修復(fù)了某個(gè),只要有修改就增加。年公司正式發(fā)布。 < 返回索引頁(yè) Python語(yǔ)言簡(jiǎn)介 Python介紹及發(fā)展 介紹 Python 官方網(wǎng)站:https://www.python.org/, 大家可以到此處下...
摘要:勤學(xué)學(xué)習(xí)效率與效果取決于執(zhí)行力。這一步學(xué)習(xí)的正確姿勢(shì)是在實(shí)踐操作中發(fā)掘問題,然后帶著問題找答案。拆分任務(wù)將目標(biāo)分解成具體可執(zhí)行的學(xué)習(xí)任務(wù)。勤學(xué)強(qiáng)大的執(zhí)行力是學(xué)習(xí)的根本保障。分享復(fù)述檢驗(yàn)學(xué)習(xí)成果,提高學(xué)習(xí)效果的最好方法。 showImg(https://segmentfault.com/img/bVbcPGZ?w=256&h=256); 前段時(shí)間和大家一起分享了一篇關(guān)于學(xué)習(xí)方法內(nèi)容《大牛...
摘要:課程簡(jiǎn)介簡(jiǎn)明易懂的課程,不僅適用于那些有其它語(yǔ)言基礎(chǔ)的同學(xué),對(duì)沒有編程經(jīng)驗(yàn)的同學(xué)也非常友好。建議遵守以下約定使用個(gè)空格來縮進(jìn)永遠(yuǎn)不要混用空格和制表符在函數(shù)之間空一行在類之間空兩行字典,列表,元組以及參數(shù)列表中,在后添加一個(gè)空格。 showImg(https://segmentfault.com/img/bVCldE); 課程簡(jiǎn)介:簡(jiǎn)明易懂的 Python3 課程,不僅適用于那些有其它語(yǔ)...
閱讀 580·2021-11-25 09:44
閱讀 2670·2021-11-24 09:39
閱讀 2348·2021-11-22 15:29
閱讀 3554·2021-11-15 11:37
閱讀 3423·2021-09-24 10:36
閱讀 2559·2021-09-04 16:41
閱讀 1028·2021-09-03 10:28
閱讀 1930·2019-08-30 15:55