摘要:在中,并不是一個內(nèi)置函數(shù),而是一個類型,但是在中它是一個內(nèi)置函數(shù)上面是中從看到的的說明,它的是,而不像內(nèi)置函數(shù)的是。雖然的類型從中的內(nèi)置函數(shù)變成了中的,但并不影響我們對它的使用。
循環(huán)是計算機程序中經(jīng)常用到的流程。試想一下,如果我們有一萬個數(shù)據(jù)要處理,每個數(shù)據(jù)處理的流程都一模一樣,如果我們用順序流程就要把處理流程重復(fù)寫一萬遍,是不是很累?而用for循環(huán)就簡單多了。
for循環(huán)for循環(huán)其實前面講遍歷列表、字典的時候我們就已經(jīng)遇到了,它的語法很簡單,就是for item in items。
下面我們看一下for循環(huán):
numbers = [1,2,3,4,5,6] for n in numbers: x = n * n print(x)
for循環(huán)用來遍歷一個序列是最常用的,有時候并沒有給我們一個現(xiàn)成的序列要遍歷,只是我們的程序需要循環(huán)特定的次數(shù),這時候我們就用到了range()函數(shù)。在Python 3.6中,range并不是一個內(nèi)置函數(shù),而是一個類型,但是在Python 2.7中它是一個內(nèi)置函數(shù):
In [134]: range? Init signature: range(self, /, *args, **kwargs) Docstring: range(stop) -> range object range(start, stop[, step]) -> range object Return an object that produces a sequence of integers from start (inclusive) to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1. start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3. These are exactly the valid indices for a list of 4 elements. When step is given, it specifies the increment (or decrement). Type: type Subclasses: In [135]: type(range) Out[135]: type In [136]: len? Signature: len(obj, /) Docstring: Return the number of items in a container. Type: builtin_function_or_method In [137]: range(4) Out[137]: range(0, 4)
上面是Python 3.6中從IPython看到的range的說明,它的Type是type,而不像內(nèi)置函數(shù)len的Type是builtin_function_or_method。
雖然range的類型從Python 2中的內(nèi)置函數(shù)變成了3.6中的type,但并不影響我們對它的使用。假如我們想打印 hi 特定次數(shù),
比如3次,下面就是range的經(jīng)典用法:
for i in range(3): print("hi")
這里的i并沒有在循環(huán)中被使用,為了不讓代碼規(guī)范檢查程序(如pylint)報錯“有未使用的變量”,我們可以用下劃線_替代
。
range()參數(shù)個數(shù)的不同也代表了生成不同的序列:
range(5) 生成從0-4共5個整數(shù)序列
range(1,5) 生成從1開始到5為止但不包含5的整數(shù)序列,即1-4
range(1,5,2) 從1開始到5為止,每次步長為2的整數(shù)序列,即:[1,3]
比如,求10以內(nèi)偶數(shù)的和:
sum = 0 for i in range(0, 10, 2): sum += i print(sum)while 循環(huán)
while是另外一種形式的循環(huán),它的語法如下所示:
while condition: do something
示例代碼:
a = 3 while a > 0: print(a) a -= 1
上面代碼循環(huán)3次,每次會對條件變量a減1,當while發(fā)現(xiàn)a不大于0時就會終止循環(huán)。
如果在循環(huán)里面,我們不對a進行改變,會發(fā)生什么?沒錯,會出現(xiàn)死循環(huán)!你的CPU使用率立馬爆滿100%,滿屏不斷刷新打印3。死循環(huán)是編程中的大忌,一定要小心哦。
break和continuebreak是終止(或叫做“跳出”)整個循環(huán);continue是跳過本次循環(huán)后面的代碼去執(zhí)行循環(huán)的下一次。要理解這兄弟倆,還是看代碼吧:
for i in range(10): if i < 3: continue if i > 7: break prirnt(i)
這段代碼的意思是,
如果i<3就continue到下一次的循環(huán),continue后面的代碼不會被執(zhí)行,所以0,1,2就不會被打??;
如果i>7就break整個循環(huán),即跳出循環(huán),7后面的8,9也自然不會被打??;
不滿足上面兩個情況的3,4,5,6,7就被打印了。
所以這段代碼的輸出是:
3 4 5 6 7
以上例子是for循環(huán)的,但break和continue同樣適用于while循環(huán)。小猿們可以在本節(jié)結(jié)束后,練習(xí)一下while循環(huán)中的break和continue
循環(huán)的else這應(yīng)該是Python獨有的特性吧,循環(huán)也可以有else。當循環(huán)正常結(jié)束(沒有break)后,就會執(zhí)行else代碼段:
for i in range(3): print(i) else: print("loop ends") for i in range(3): if i > 1: break print(i) else: print("loop ends")
猜猜這段代碼的輸出吧,如果沒有把握就親自執(zhí)行一下就明白了。
總結(jié)循環(huán)是程序中另外一種重要的流程控制,在批量處理數(shù)據(jù)、服務(wù)器程序中大量使用。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43769.html
摘要:基礎(chǔ)之控制結(jié)構(gòu)學(xué)習(xí)目標代碼塊與縮進條件語句語句語句的嵌套斷言循環(huán)循環(huán)循環(huán)中斷循環(huán)控制語句綜合嵌套列表解析式基礎(chǔ)相關(guān)鏈接學(xué)習(xí)目標是簡潔易學(xué)面向?qū)ο蟮木幊陶Z言。 Py...
摘要:具有以下基本同步原語子進程提供了通過創(chuàng)建和管理子進程的。雖然隊列不是線程安全的,但它們被設(shè)計為專門用于代碼。表示異步操作的最終結(jié)果。 Python的asyncio是使用 async/await 語法編寫并發(fā)代碼的標準庫。通過上一節(jié)的講解,我們了解了它不斷變化的發(fā)展歷史。到了Python最新穩(wěn)定版 3.7 這個版本,asyncio又做了比較大的調(diào)整,把這個庫的API分為了 高層級API和...
摘要:然而,計算機程序不只是順序執(zhí)行,為了實現(xiàn)更多更賦值的邏輯,程序的執(zhí)行需要更多的流程控制,它們就是條件判斷和循環(huán)。條件判斷過程中,可以單獨存在,后面的可要可不要,根據(jù)實際情況而定。 前面我們學(xué)習(xí)Python基礎(chǔ)語法和數(shù)據(jù)類型的過程中,已經(jīng)接觸過很多Python的程序代碼了,它們都是從第一行往后一行一行地執(zhí)行,也就是從頭到尾的順序執(zhí)行。 然而,計算機程序不只是順序執(zhí)行,為了實現(xiàn)更多更賦值的...
摘要:迭代器和生成器字符串,列表或元組對象都可用于創(chuàng)建迭代器。創(chuàng)建自己的迭代器,需要在類中實現(xiàn)實現(xiàn)兩個方法與。方法返回一個特殊的迭代器對象,這個迭代器對象實現(xiàn)了方法并通過異常標識迭代的完成。要反向遍歷一個序列,首先指定這個序列,然后調(diào)用函數(shù)。 1. a, b = a, a + b 先計算右邊表達式,然后再同時賦值給左邊。 2. 條件控制和循環(huán)語句 條件控制 if condition_1: ...
閱讀 2617·2021-08-20 09:38
閱讀 1384·2019-08-30 15:43
閱讀 619·2019-08-29 17:13
閱讀 1630·2019-08-29 14:01
閱讀 1343·2019-08-29 13:29
閱讀 2366·2019-08-23 18:29
閱讀 2074·2019-08-23 17:51
閱讀 1945·2019-08-23 17:16