Python 使用iter()函数

  • Post category:Python

Python使用iter()函数

iter()函数是Python内置函数之一,用于返回一个迭代器对象。该函数接收两个参数:

iter(object[, sentinel])

其中,object是一个可迭代对象,sentinel是一个可选参数。如果指定了sentinel参数,那么object就是一个可调用的无参函数,只要这个函数返回的值等于sentineliter()就会停止迭代。

iter()函数会返回一个迭代器对象,使用迭代器对象可以迭代一个序列、映射或者自定义对象。

下面,我们将详细讲解iter()函数的使用方法。

使用iter()函数遍历序列

iter()函数可以通过传递一个序列对象,返回一个迭代器对象,并且该迭代器对象可以用于遍历序列。

下面上代码演示:

# 声明一个列表
lst = [1, 2, 3, 4]

# 获取迭代器对象
it = iter(lst)

# 遍历序列
while True:
  try:
    # 获取下一个元素
    item = next(it)
    # 输出元素
    print(item)
  except StopIteration:
    # 迭代结束
    break

代码执行结果:

1
2
3
4

上面代码中,我们先定义了一个列表lst,然后使用iter()函数获取了该列表的迭代器对象it。接下来,通过while循环、next()函数以及try/except语句,遍历了该序列。当满足StopIteration异常时,说明迭代结束。

自定义可迭代对象

我们也可以自定义一个可迭代对象,用于实现自己的迭代逻辑。自定义可迭代对象必须实现以下两个魔法方法:

  • __iter__(self)
  • __next__(self)

下面用代码演示一下:

class MyList:
  def __init__(self, lst):
    self.lst = lst
    self.index = -1

  def __iter__(self):
    return self

  def __next__(self):
    self.index += 1
    if self.index < len(self.lst):
        return self.lst[self.index]
    raise StopIteration


# 测试代码
my_lst = MyList([1, 2, 3, 4])
for item in my_lst:
  print(item)

代码执行结果:

1
2
3
4

上面代码中,我们自定义了一个名为MyList的类,该类实现了__iter__()__next__()两个魔法方法。当我们用MyList类创建一个自己的列表对象my_lst,并且使用for循环遍历该对象时,Python会自动调用__iter__(self)方法获取一个迭代器对象,并且使用该对象进行遍历。

至此,我们已经讲解了使用iter()函数的两种常见用法,即遍历序列和自定义可迭代对象。相信通过这篇教程,你已经对iter()函数有了更深入的了解。