温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python迭代器是什么

发布时间:2026-09-04 09:58:31 来源:亿速云 阅读:98 作者:小樊 栏目:编程语言

在 Python 中,迭代器(Iterator)是一种用于逐个访问容器中元素的对象,而不需要一次性把所有数据加载到内存中。


1. 基本概念

可迭代对象(Iterable)
能被 for 循环遍历的对象,比如:

  • list
  • tuple
  • dict
  • set
  • str
  • 生成器

判断是否可迭代:

from collections.abc import Iterable

print(isinstance([1,2,3], Iterable))  # True

迭代器(Iterator)
是一个特殊的对象,满足两个条件:

  1. 实现了 __iter__() 方法(返回自身)
  2. 实现了 __next__() 方法(返回下一个元素,没有时抛 StopIteration)

判断是否迭代器:

from collections.abc import Iterator

print(isinstance(iter([1,2,3]), Iterator))  # True

2. 可迭代对象 vs 迭代器

lst = [1, 2, 3]

# 可迭代对象
print(hasattr(lst, "__iter__"))  # True
print(hasattr(lst, "__next__")) # False

# 迭代器
it = iter(lst)
print(hasattr(it, "__iter__"))  # True
print(hasattr(it, "__next__"))  # True

3. 迭代器的工作方式

it = iter([1, 2, 3])

print(next(it))  # 1
print(next(it))  # 2
print(next(it))  # 3
print(next(it))  # 抛出 StopIteration

用 for 循环本质就是:

it = iter([1, 2, 3])
while True:
    try:
        x = next(it)
        print(x)
    except StopIteration:
        break

4. 自定义迭代器

class MyRange:
    def __init__(self, n):
        self.n = n
        self.i = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.i < self.n:
            val = self.i
            self.i += 1
            return val
        else:
            raise StopIteration

for x in MyRange(3):
    print(x)

5. 迭代器的特点

✅ 惰性计算(节省内存)
✅ 只能向前,不能回退
✅ 用完即“耗尽”

it = iter([1,2,3])
list(it)  # [1,2,3]
list(it)  # []

6. 迭代器 vs 生成器

  • 生成器是写迭代器的最简单方式
  • 生成器自动实现 __iter__ 和 __next__
def gen(n):
    for i in range(n):
        yield i

g = gen(3)
print(next(g))  # 0

如果你愿意,我也可以帮你:

  • 用图解释迭代过程
  • 对比 Java / C++ 的迭代器
  • 讲清 iter() 的内部机制
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手