详解Python 迭代器技巧

  • Post category:Python

Python 迭代器是一种遍历集合数据类型(如列表、元组、字典等)的机制,使用了它可以对不同类型的数据进行遍历操作,也可以对数据进行操作。Python 的迭代器协议是指:对象必须定义 __iter__()__next__() 方法。

下面是Python 迭代器技巧使用方法的攻略:

1.创建一个迭代器

创建一个迭代器的方法是在类中实现 __iter__()方法和 __next__() 方法。如下所示:

class MyNumbers:
  def __init__(self):
    self.a = 1

  def __iter__(self):
    return self

  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

在以上示例中,类 MyNumbers 实现了 __iter__()__next__() 方法,并且只能生成 1 ~ 20 的整数。__iter__() 方法返回迭代器本身,__next__ 方法定义了每次迭代时返回的数据。

2.使用内置函数 iter() 和 next() 进行迭代

Python 的内置函数 iter() 可以将可迭代的对象转换为一个迭代器,内置函数 next() 则可以逐个输出数据。如下所示:

mylist = [1, 2, 3]
it = iter(mylist)
print(next(it)) # 输出 1
print(next(it)) # 输出 2
print(next(it)) # 输出 3

以上示例中,将一个列表转换为迭代器并逐个输出其中的数据。

3.使用迭代器进行遍历数列

使用迭代器遍历数列的方法是,使用 for 循环。如下所示:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    if self.a <= 23:
      x = self.a
      self.a += 2
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)

以上示例中,遍历 1 ~ 23 的奇数。首先创建一个迭代器对象,然后使用 for 循环遍历这个迭代器并输出其中的数据。

以上就是 Python 迭代器技巧使用方法的完整攻略,希望对你有所帮助。