W30-python03-迭代器和生成器

迭代器:迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter()next()

生成器:使用了 yield 的函数被称为生成器,在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象


my_l = [1, 2, 3, 4]
for i in my_l:
    print(i)  # 成员遍历

# 迭代器 iter
my_iter = iter(my_l)
print(my_iter.__next__()) # 返回__next__ 返回迭代器对象
print(next(my_iter))
print('-1--------')
for i in my_iter:
    print(i) # 返回迭代器成员值

while True:
    try:
        n = my_iter.__next__()
        print(n)
    except:
        print('------2------')
        break


def my_generator():
    """生成器"""
    for i in range(1,5):
        # 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,
        # 返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
        print('生成前')
        yield i
        print('生成后')


# 调用生成器,得到一个迭代器
m = my_generator()
print(m)
print(m.__next__())
print(m.__next__())

执行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值