Python3 iter() 函數(shù) -生成迭代器

2023-04-20 11:25 更新

Python 內(nèi)置函數(shù) Python 內(nèi)置函數(shù)


描述

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ì)象。 


語(yǔ)法

? iter()? 方法的語(yǔ)法有兩種,分別是:

iter(object)

iter(object, sentinel)

sentinel參數(shù)用于指示迭代的停止條件。


參數(shù)

  • object:支持迭代的集合對(duì)象(在不傳入sentinel參數(shù)時(shí))或者可調(diào)用的對(duì)象(第二種情況)。
  • sentinel:如果傳遞了第二個(gè)參數(shù),則參數(shù) object 必須是一個(gè)可調(diào)用的對(duì)象(如,函數(shù)),此時(shí),iter 創(chuàng)建了一個(gè)迭代器對(duì)象,每次調(diào)用這個(gè)迭代器對(duì)象的?__next__()?方法時(shí),都會(huì)調(diào)用 object。

返回值

迭代器對(duì)象。


實(shí)例

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)



Python 內(nèi)置函數(shù) Python 內(nèi)置函數(shù)



以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)