python2/3 可迭代对象(iterable),迭代器(iterator),生成器(generator),推导式(comprehension)详解

本文详细介绍了Python中的可迭代对象(iterable)、迭代器(iterator)、生成器(generator)和推导式(comprehension)的概念与使用。重点阐述了生成器在实现迭代过程中的作用,以及如何通过推导式创建生成器。内容包括可迭代对象的定义、迭代器的实现方式、生成器函数的特征,以及推导式的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 1. iterable 可迭代对象:

2. iterator迭代器:

3. generator function 生成器

4. 通过推导式实现Generator【生成器】

5. 推导式


简介:

  1. iterable 可迭代对象: 实现__iter__(self)方法的对象
  2. iterator同时实现 __iter__(self) 和 __next__(self) [python3]方法的对象, python2中实现 next(self) 方法
  3. Generator 函数 包含yield语句的函数,该函数返回一个Generator【生成器】,同时也是Iterator【迭代器】维基百科:https://wiki.python.org/moin/Generators
  4. 推导式:列表,集合,字典

关系:Generator是特殊的Iterator【迭代器】,同时他们都是可迭代对象,list,tuple,set,dict也是可迭代对象


 1. iterable 可迭代对象:

实现了 __iter__(self) 方法的对象,在该方法中返回一个迭代器或者实现了next(python2)或者 __next__(self) (python3)的对象

常见可迭代对象:tuple,list,set,dict

from collections import Iterable, Iterator

print(isinstance(dict(), Iterable))  # True
print(isinstance(dict(), Iterator))  # False
# list, set, tuple 类似

          示例:

class Test:
    def __init__(self):
        # 实现next方法的对象,该对象能通过next()方法调用获取下一个值,从而实现迭代
        self.__max = 10
        self.__cur_num = 0

    def __next__(self):  # python3 实现
        return self.next()

    def next(self):  # python2 中实现
        if self.__cur_num < self.__max:
            tmp, self.__cur_num = self.__cur_num, self.__cur_num + 1
            return tmp
        else:  # 用于终止循环
            raise StopIteration()        

class MyIterable(object):
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值