日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python-迭代器

發(fā)布時(shí)間:2023/12/20 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python-迭代器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在介紹迭代器之前,先說明下迭代的概念:

迭代:通過for循環(huán)遍歷對(duì)象的每一個(gè)元素的過程。

Python的for語法功能非常強(qiáng)大,可以遍歷任何可迭代的對(duì)象。

在Python中,list/tuple/string/dict/set/bytes都是可以迭代的數(shù)據(jù)類型。

可以通過collections模塊的Iterable類型來判斷一個(gè)對(duì)象是否可迭代:

from collections import Iterable print(isinstance('abcd', Iterable)) print(isinstance([1, 2, 3], Iterable)) print(isinstance(123, Iterable))

結(jié)果:

True
True
False

?

迭代器

迭代器是一種可以被遍歷的對(duì)象,并且能作用于next()函數(shù)。迭代器對(duì)象從集合的第一個(gè)元素開始訪問,直到所有的元素被訪問完結(jié)束。迭代器只能往后遍歷不能回溯,不像列表,你隨時(shí)可以取后面的數(shù)據(jù),也可以返回頭取前面的數(shù)據(jù)。迭代器通常要實(shí)現(xiàn)兩個(gè)基本的方法:iter()?和?next()。

字符串,列表或元組對(duì)象,甚至自定義對(duì)象都可用于創(chuàng)建迭代器:

lis = [1, 2, 3, 4] it = iter(lis) #使用python內(nèi)置的iter()方法創(chuàng)建迭代器對(duì)象 print(next(it)) print(next(it)) print(next(it)) print(next(it)) #print(next(it)) #當(dāng)后面沒有元素可以next的時(shí)候,彈出錯(cuò)誤

結(jié)果:

1
2
3
4
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\test_r.py", line 89, in <module>
print(next(it)) #當(dāng)后面沒有元素可以next的時(shí)候,彈出錯(cuò)誤
StopIteration

?

或者使用for循環(huán)遍歷迭代器:

lis1 = [1, 2, 3, 4] it1 = iter(lis1) #創(chuàng)建迭代器對(duì)象 for i in it1:print(i,end=" ")

結(jié)果:

1 2 3 4?

?

很多時(shí)候,為了讓我們自己寫的類成為一個(gè)迭代器,需要在類里實(shí)現(xiàn)__iter()__和__next()__方法。

總結(jié):Python的迭代器表示的是一個(gè)元素流,可以被next()函數(shù)調(diào)用并不斷返回下一個(gè)元素,直到?jīng)]有元素時(shí)拋出StopIteration錯(cuò)誤。可以把這個(gè)元素流看做是一個(gè)有序序列,但卻不能提前知道序列的長度,只能不斷通過next()函數(shù)得到下一個(gè)元素,所以迭代器可以節(jié)省內(nèi)存和空間。

迭代器(Iterator)和可迭代(Iterable)的區(qū)別

  • 凡是可作用于for循環(huán)的對(duì)象都是可迭代類型;

  • 凡是可作用于next()函數(shù)的對(duì)象都是迭代器類型;

  • list、dict、str等是可迭代的但不是迭代器,因?yàn)閚ext()函數(shù)無法調(diào)用它們。可以通過iter()函數(shù)將它們轉(zhuǎn)換成迭代器。

  • Python的for循環(huán)本質(zhì)上就是通過不斷調(diào)用next()函數(shù)實(shí)現(xiàn)的。

轉(zhuǎn)載于:https://www.cnblogs.com/R-bear/p/7744755.html

總結(jié)

以上是生活随笔為你收集整理的python-迭代器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。