python中for迴圈的本質

2021-10-07 12:21:55 字數 1771 閱讀 5193

對於使用python的小夥伴來說,for迴圈絕對不會陌生,它頻繁地出現在**當中,為我們對無論是檔案還是序列進行修改,讀取都提供了方便,對for的熟練使用可以說是我們python學習者必備的乙個技能了,但小夥伴們用了這麼久到底是否真的了解for迴圈呢,是否真正熟絡for迴圈內部的執行呢?

進入正題,下面就讓我們一起來看一下吧

基本格式為**for i in iterable**: 後面跟你執行的操作
舉個簡單的栗子:

# 用for循化遍歷列表的值並列印

for i in[1

,2,3

]:print

(i)

當然可遍歷的不止列表,我們稱可用於for迴圈的為可迭代物件,那麼什麼為可迭代物件?

可迭代物件指的是內部有__iter__()方法的物件,如我們常用的list,tuple,dict,string,set,檔案以及迭代器

前面說過可迭代物件都可以呼叫__iter__()方法,而它的作用就是將可迭代物件(iterable)轉換為迭代器物件(iterator)

list1 =[1

,2,3

]print

(list1.__iter__())

# 轉換列表(可迭代物件)為迭代器物件

next為迭代器物件可以呼叫的一種方法,它的作用是從迭代器中返回下乙個引數

"""

next(iterator[, default])

return the next item from the iterator. if default is given and the iterator

is exhausted, it is returned instead of raising stopiteration.

"""list1=[1

,2,3

]a=iter

(list1)

#等價於a=list1.__iter__() 生成迭代器物件

print

(next

(a))

# 1print

(next

(a))

# 2print

(next

(a))

# 3

a = list1.__iter__()#

while

true

:try

: i=

next

(a)print

(i)except stopiteration as r:

# print('stopiteration')

break

即先將遍歷的物件用iter方法做成迭代器,再迴圈呼叫next方法拿到迭代器裡引數的值,直到python捕捉到了stopiteration異常,這時終止迴圈,也就是for迴圈結束

for迴圈的本質就是如上所述了,看完小夥伴們有沒有對for 迴圈有了更深刻的理解呢?

Python教程 for迴圈本質

我們先來看一下for迴圈的一些簡單應用 ls 1,2,3 for i in ls print i 我們知道這樣可以遍歷地取出這裡面的每乙個元素,但是它的工作原理,我們都是模模糊糊的大概知道是那個樣子。其實for迴圈的工作流程是基於迭代器協議的。為明白他的整個工作流程,我們不得不先看一下迭代器協議。迭...

jQuery中迴圈的本質

1.list li css 上面這句話,裡面實際上的本質還是js的迴圈在完成多個元素背景的修改,其實也就是jquery內部提供的乙個函式或者方法來給我們使用,即each 在開發中,有時候針對jquery元素,我們也是需要each來完成迴圈工作的 2.比如在獲取屬性值的時候,即便選擇器取到多個元素,但...

for迴圈內部的本質

for 迴圈內部的本質 1.將in 後面的物件呼叫了 iter 轉換成了迭代物件 2.呼叫 next 迭代取值 3 內部有異常捕獲 stoppiteration,當 next 出現這種報錯的時候迴圈自動結束 可迭代物件 內建方法有 iter 的 迭代器物件 即擁有 iter 的方法同時還具備 nex...