python迭代器

        学习迭代器之前,先搞清楚几个名词。iterable:可迭代对象;iterator:迭代器;next():下一个;iter():让……变成迭代器。

        可迭代对象:能使用for循环遍历的容器对象都叫做可迭代对象。也就是可以转换为迭代器的对象就叫做可迭代对象。

        迭代器:就是一个数据流对象,且是能不停地取下一个数据的对象。也就是被iter()函数变为了迭代器。但是它本质上就是一段实现数据生成的代码。

        字符串str,集合set,元组tuple,列表list是可迭代对象而不是迭代器,是因为他们自身需要使用内置函数iter()将自身变为迭代器。

        iter()函数的参数必须是一个可迭代对象。iter(iterable)。

目录

一,一张图弄清楚生成器,迭代器,可迭代对象的区别

二,for循环的本质

三,手动写一个迭代器


一,一张图弄清楚生成器,迭代器,可迭代对象的区别

二,for循环的本质

list1 = [x for x in range(20) if x % 5 == 0]
for i in list1:
    print(i)

# for循环本质如下:
# 先转为一个迭代器,再next()
iterator_of_list1 = iter(list1)
while True:
    try:
        val = iterator_of_list1.__next__()
        print(val)
    except StopIteration as err:
        print(err)
        break

三,手动写一个迭代器

        具有next()方法的对象就是可迭代对象。同时具有next()和iter()方法的是迭代器。

#这个迭代器按要求设置产生不同个数的迭代器
import time


class IteratorOfme:
    def __init__(self, max_num):
        self.max_num = max_num

    def __iter__(self):
        self.init_num = 1
        return self

    def __next__(self):
        if self.init_num <= self.max_num:
            self.init_num += 1
            return self.init_num - 1
        else:
            raise StopIteration


ins_of_IteratorOfme = IteratorOfme(10)  # 生成10个数
iterator_of_ins_of_IteratorOfme = iter(ins_of_IteratorOfme)  # 必须使用iter()迭一下
while True:
    time.sleep(0.5)
    print(next(iterator_of_ins_of_IteratorOfme))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值