python中的iter()函数怎么使用?

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)。它会不断调用该函数,直到返回值等于哨兵值为止。

  • 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 循环和生成器的工作原理。