iter()函数可将可迭代对象转为迭代器,支持基本可迭代类型如列表、元组,并可通过callable与sentinel实现条件循环,结合__iter__()和__next__()可创建自定义迭代器。

iter() 函数用来将一个可迭代对象转换成一个迭代器,或者用于创建自定义的迭代器。只要对象支持迭代协议(即有 __iter__() 方法或实现了 __getitem__()),就可以使用 iter()。
基本用法:从可迭代对象创建迭代器
常见的列表、元组、字符串等都可以通过 iter() 变成迭代器。
- my_list = [1, 2, 3]
- it = iter(my_list)
- print(next(it)) # 输出 1
- print(next(it)) # 输出 2
- print(next(it)) # 输出 3
当没有更多元素时,调用 next() 会抛出 StopIteration 异常,表示迭代结束。
带 callable 和 sentinel 的用法
iter() 还可以接受两个参数:一个可调用对象和一个“哨兵值”(sentinel)。它会不断调用该函数,直到返回值等于哨兵值为止。
立即学习“Python免费学习笔记(深入)”;
本文档主要讲述的是Python之模块学习;python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题。模块我们就可以理解为lib库,如果需要使用某个模块中的函数或对象,则要导入这个模块才可以使用,除了系统默认的模块(内置函数)不需要导入外。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
- def read_data():
- return input("输入内容(输入quit结束): ")
- for line in iter(read_data, 'quit'):
- print(f"你输入了: {line}")
这个用法适合处理需要持续调用某个函数直到满足条件的情况,比如读取文件流或用户输入。
自定义类中使用 iter()
在类中实现 __iter__() 方法,可以让实例成为可迭代对象。
- class CountDown:
- def __init__(self, start):
- self.start = start
- def __iter__(self):
- return self
- def __next__(self):
- if self.start
- raise StopIteration
- self.start -= 1
- return self.start + 1
- cd = CountDown(3)
- it = iter(cd)
- print(next(it)) # 3
- print(next(it)) # 2
这种模式适用于需要按特定逻辑逐个生成值的场景。
基本上就这些。iter() 的核心作用是统一获取迭代器的方式,让循环和数据处理更灵活。理解它有助于掌握 Python 中 for 循环和生成器的工作原理。










