python 可迭代类型

1、可迭代对象

        可迭代对象是Python中一个核心的概念,它指的是可以for循环遍历的对象。几乎所有的Python集合类型(如列表、元组、字典和集合)都是可迭代的、迭代器、生成器。

2、迭代器

        迭代器是遵循迭代器协议的对象,它允许我们逐个访问集合中的元素,而不需要一次性加载整个集合到内存中。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

在类中实现两个方法 __iter__()__next__() 迭代器
class MyDatas:
    def __init__(self, num):
        self.data = [i for i in range(1, num + 1)]
        self.current = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.current < len(self.data):
            result = self.data[self.current]
            self.current += 1
            return result
        else:
            raise IndexError


md = MyDatas(5)

print(isinstance(md, Iterable), isinstance(md, Iterator))
while True:
    try:
        print(next(md))
    except IndexError as e:
        print()
        break

 

3、生成器

        生成器是一种特殊的迭代器,它使用yield关键字来产生一个值,然后挂起函数的执行,直到下一次迭代器的调用。

def my_fun():
    yield 1
    yield 2
    yield 4
    yield 6
    return 100


r = my_fun()

while True:
    try:
        print(next(r))
    except StopIteration as e:
        print("结束", e)
        break

结语 

        在某些情况下,使用生成器和迭代器可以显著提高程序的性能,尤其是在处理大量数据时。例如,生成器可以按需产生数据,而不是一次性加载所有数据到内存中,增强了代码的可读性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值