W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Python? iter()
?函數(shù)用來(lái)生成迭代器。
有些對(duì)象(尤其是自定義的對(duì)象)可以像數(shù)組一樣讀出數(shù)據(jù),但本身不是可迭代對(duì)象,這個(gè)時(shí)候就可以使用iter()將其轉(zhuǎn)換成可迭代對(duì)象。
在類(lèi)中實(shí)現(xiàn)了如果只實(shí)現(xiàn)?
__getitem__()
?的對(duì)象可以通過(guò)?iter()
?函數(shù)轉(zhuǎn)化成迭代器但其本身不是可迭代對(duì)象。所以當(dāng)一個(gè)對(duì)象能夠在for循環(huán)中運(yùn)行時(shí),不能確定是Iterable對(duì)象。
? iter()
? 方法的語(yǔ)法有兩種,分別是:
iter(object)
和
iter(object, sentinel)
sentinel參數(shù)用于指示迭代的停止條件。
__next__()
?方法時(shí),都會(huì)調(diào)用 object。迭代器對(duì)象。
from typing import Iterable
class LinearDataStructure:
# 一個(gè)自己實(shí)現(xiàn)的線(xiàn)性表,未傳參時(shí)默認(rèn)為1,2,3
def __init__(self, data=[1, 2, 3]):
self.data = data
def get_data(self):
return self.data
def __getitem__(self,idx):
return(self.data[idx])
# 第一種語(yǔ)法
lds = LinearDataStructure()
print(isinstance(lds,Iterable)) # 這個(gè)線(xiàn)性表不是可迭代對(duì)象
print(isinstance(iter(lds),Iterable)) # 使用iter方法可以把這個(gè)線(xiàn)性表變成可迭代對(duì)象
# 第二種語(yǔ)法
def read_until(f, stop):
return iter(lambda: f.readline().strip(), stop)
with open('file.txt') as f:
for line in read_until(f, ''):
print(line)
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: