Pythoniter()
函数用来生成迭代器。
有些对象(尤其是自定义的对象)可以像数组一样读出数据,但本身不是可迭代对象,这个时候就可以使用iter()将其转换成可迭代对象。
在类中实现了如果只实现__getitem__()
的对象可以通过iter()
函数转化成迭代器但其本身不是可迭代对象。所以当一个对象能够在for循环中运行时,不能确定是Iterable对象。
iter()
方法的语法有两种,分别是:
iter(object)
和
iter(object, sentinel)
sentinel参数用于指示迭代的停止条件。
__next__()
方法时,都会调用 object。迭代器对象。
from typing import Iterable
class LinearDataStructure:
# 一个自己实现的线性表,未传参时默认为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])
# 第一种语法
lds = LinearDataStructure()
print(isinstance(lds,Iterable)) # 这个线性表不是可迭代对象
print(isinstance(iter(lds),Iterable)) # 使用iter方法可以把这个线性表变成可迭代对象
# 第二种语法
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)
备案信息: 粤ICP备15087711号-2
Copyright © 2008-2024 啊嘎哇在线工具箱 All Rights.
本站所有资料来源于网络,版权归原作者所有,仅作学习交流使用,如不慎侵犯了您的权利,请联系我们。