對於使用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...