新聞中心
python中的for循環(huán)是一個(gè)通用的序列迭代器,可以遍歷任何有序的序列對(duì)象內(nèi)部的元素,(注意是遍歷),也就是說(shuō)循環(huán)的方式一開(kāi)始就固定好了,本質(zhì)上是遍歷。

成都創(chuàng)新互聯(lián)公司專(zhuān)注于惠城網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供惠城營(yíng)銷(xiāo)型網(wǎng)站建設(shè),惠城網(wǎng)站制作、惠城網(wǎng)頁(yè)設(shè)計(jì)、惠城網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造惠城網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供惠城網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
python:代碼
count = 0for i in range(8): if i % 2 == 0:
i += 2 print(i, end=' ')
count += 1print('\n總次數(shù)',count)返回結(jié)果
2 1 4 3 6 5 8 7 總次數(shù) 8
我的本意是想讓這個(gè)程序遇到偶數(shù)跳兩個(gè),很顯然,它還是執(zhí)行了八次
而c++代碼就可以用for實(shí)現(xiàn)這個(gè)功能:
for(int i = 1; i<=8;i++)
{
if(i%2==0){
i += 2;
}
cout<結(jié)果為
1 4 5 8
python里要簡(jiǎn)單的實(shí)現(xiàn)上述功能,則需要用while了。
總結(jié): 里的 只是對(duì)一個(gè)有序序列的遍歷
深層次原因:
python 中的for循環(huán)實(shí)質(zhì)上是一個(gè)迭代器,迭代器在一個(gè)獨(dú)立的線程中工作,并且擁有mutex(互斥)鎖,即只有一個(gè)進(jìn)程能訪問(wèn)這個(gè)可迭代對(duì)象。
當(dāng)?shù)鞅粍?chuàng)建時(shí),在這里是,它生成一個(gè)內(nèi)存索引表,這個(gè)表指向可迭代對(duì)象,在這里是range(8)。當(dāng)i改變時(shí),因?yàn)閙utex鎖的原因,這個(gè)索引表的內(nèi)容并沒(méi)有同步改變。也可以說(shuō)成,此非彼。
但是如果是引用,那沒(méi)有問(wèn)題,這也很容易理解,比如在循環(huán)里打印print(i+2)什么的,都可以的。引用的還是那個(gè)
當(dāng)然, python中的循環(huán)也是可以改變循環(huán)次數(shù)的,重點(diǎn)在這句話--這個(gè)迭代器建立的內(nèi)存索引表指向一個(gè)可迭代對(duì)象。
我們來(lái)看看列表,例如
a= [1,2,3,4]
這個(gè)a列表本質(zhì)上是對(duì)a[0],a[1],a[2],a[4]的引用,而又因?yàn)榱斜肀旧硎且粋€(gè)可迭代對(duì)象,所以我們改變這個(gè)列表(可迭代對(duì)象)的內(nèi)部引用即可
count = 0
for i in a:
a[1:] = [1]
count += 1
print(count)
count 的結(jié)果為2
而上面的\color{red}{range}我們是沒(méi)辦法對(duì)其內(nèi)部操作的,第一個(gè)i是對(duì)內(nèi)存索引表的挨個(gè)查找,第二個(gè)i是新的對(duì)象
而對(duì)于列表,我們直接改變了可迭代對(duì)象的結(jié)構(gòu),也就是說(shuō)內(nèi)存索引表本身發(fā)生了變化。
while
Python中的while循環(huán)是當(dāng)條件滿足時(shí),便一直執(zhí)行,當(dāng)條件不滿足時(shí),會(huì)停止
例如
while True:
print(1)
上面例子就是一個(gè)死循環(huán)。
網(wǎng)站欄目:創(chuàng)新互聯(lián)Python教程:手把手教你使用python中的循環(huán)for和while
瀏覽路徑:http://m.fisionsoft.com.cn/article/djhpspp.html


咨詢(xún)
建站咨詢(xún)
