猫史档案馆


什么是Py迭代器????

用户:一个STUB用户_6923702一个STUB用户_6923702查看:2 回复:2 评论:2 创建时间:2020-03-04T19:47:46


就是可以迭代的东西嘛……[哔——]

介绍这个iter()

#当然,打印一个迭代器对象会返回内存位置的
b = iter(['Link','is','a','handsome'])
for a in range(4):
    print(next(b), end=' ')

看,iter()把这东西变成了个迭代器对象

连计算机都要叫我handsome233333

PIA!

好好好我好好说别打我

介个东西呢居然可以定义!

class handsome(object):
    def __init__(self,name='Link'):
        self.name = name
    def __iter__(a):
        print('哈哈哈哈哈哈哈哈哈哈给你个礼物')
        return iter(['Link','is','a','handsome'])
    def __next__(a):
        for i in range(100):
            print('林克是个大帅哥!!!!!!1')
        return True
a = handsome()
b = iter(a)
print(next(a))

哈哈哈哈哈哈哈哈我真的是机智啊哈哈哈哈

当然如果你很正经的话,就可以自己来定义了,比如参考这个num类

class num(object):
    def __init__(self,num=0):
        self.num = num
    def __iter__(self):
        b = []
        for i in range(0,101):
            b.append(self.num+i)#创建一个列表,从self.num+0到+100
        return iter(b)
    def __next__(self):
        return self.num+1
a = num()
b = iter(a)
for i in range(len(list(b))):
    try:
        print(next(b))
    except StopIteration:
        print('hahahahahaha')
print(next(a))

看着,很正经把如果遇到stopiteration就只能异常处理呗try except就ok,我也不知道咋处理


回复

上一页1 页 / 共 1下一页
星空之忆星空之忆

emmm,yield呢?

点赞0


评论


一个STUB用户_6923702一个STUB用户_6923702

 

懒得讲了

 

 

简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。

源自菜鸟教程

点赞0


评论