Python进阶(四) -- 协程

可迭代对象

遍历也叫迭代。

使用isinstance()检测对象是否可迭代。返回True表示可迭代,False表示不可迭代。

格式:

from collections.abc import Iterable
isinstance(检测对象,Iterable)

注意:Python3.6版本以后导入Iterable需要从collections.abc中导入,不然会报错。

迭代器

可迭代对象通_ _iter_ _方法向我们提供一个迭代器,我们在迭代一个对象的时候,实际上就是先获取该对象的一个迭代器,然后通过迭代器依次获取对象中的每一个数据。

iter()函数与next()函数

  • 获取迭代器:iter(可迭代对象)

  • 获取可迭代对象的值:next(迭代器)

  • 迭代器特点:

    1. 记录遍历的位置
    2. 提供下一个元素的值
  • for循环本质:

    1. 通过iter(可迭代对象)获取遍历对象的迭代器
    2. 通过next()获取下一个元素
    3. 捕获异常StopIteration
  • 自定义迭代器类

    1. 必须含有__iter__()
    2. 必须含有__next__()
"""
1. 一个可迭代对象提供一个迭代器
2. 可迭代对象-->iter(可迭代对象)-->next(迭代器)
"""
data_list = [1, 2, 3, 4, 65, 8, 9]
# 获取迭代器
l1_iter = iter(data_list)

# 根据迭代器获取下一个值
value = next(l1_iter)
print(value)

value = next(l1_iter)
print(value)

value = next(l1_iter)
print(value)


# 自定义迭代器类
# 1.必须含有__iter__()
# 2.必须含有__next__()
class MyIterator(object):
    def __iter__(self):
        pass

    def __next__(self):
        pass

迭代器应用:自定义列表

  1. 自定义Mylist类:
  • 初始化方法
  • __iter__()方法,对外提供迭代器
  • addItem()方法添加数据
  1. 自定义迭代器:
    • 初始化方法
    • 迭代器方法
    • 获取下一个元素值方法
"""
1. Mylist类
   初始化方法
   __iter__()方法,对外提供迭代器
   addItem()方法添加数据

"""


class MyList(object):
    def __init__(self):
        # 定义实例属性,保存数据
        self.items = []

    def __iter__(self):
        # 创建MyListIterator对象
        mylist_iterator = MyListIterator(self.items)
        return mylist_iterator

    def additem(self, data):
        self.items.append(data)
        # print(self.items)


#2. 自定义迭代器

class MyListIterator(object):
    # 初始化方法
    def __init__(self, items):
        # 定义实例属性,保存传递过来的数据
        self.items = items
        # 记录迭代器迭代器的位置
        self.index = 0
   # 迭代器方法
    def __iter__(self):
        pass
    # 获取下一个元素值方法
    def __next__(self):
        # 判断当前下标是否越界
        if self
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈钟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值