Python 迭代器 generator 和 Iterable

本文详细解释了Python中迭代器(Iterator)的概念,区分了可迭代对象(Iterable)与迭代器的区别,阐述了如何使用next()函数从迭代器中获取元素,并通过实例展示了列表、元组等数据类型与生成器(generator)之间的区别。同时,文章还提供了如何通过iter()函数将可迭代对象转化为迭代器的方法。

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

Python 迭代器

参考 https://www.jianshu.com/p/36708326ea64

理解迭代器 generator 要清楚一个概念,可以进行for 循环的为可迭代对象Iterable,并不是迭代器,迭代器是指以被 next() 函数调用并不断返回下一个值的对象,表示一个惰性计算的序列。是迭代器一定是可迭代对象,可迭代对象不一定是迭代器。

  1. Python的for循环本质上就是通过不断调用next()函数实现的
  2. 可迭代对象:list、tuple、dict、set、str、generator、generator function
  3. 迭代器:generator、generator function 可以通过iter()函数获得一个Iterator对象
from collections import Iterable,Iterator
a = (i for i in range(10))
isinstance(a,Iterator)
# True
isinstance(a,Iterable)
# True

通过iter()函数获得一个Iterator对象

a = [i for i in range(10)]
a
Out[7]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
isinstance(a,Iterator)
Out[8]: False
isinstance(a,Iterable)
Out[9]: True
isinstance(iter(a),Iterator)
Out[10]: True

def test(a=5):
    index = 0
    while index < a:
        yield index
        index += 1
        
a = test()
isinstance(a,Iterable)
Out[26]: True
isinstance(a,Iterator)
Out[27]: True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值