从零开始学python | Python迭代器:什么是Python中的迭代器,以及如何使用它?

【摘要】 这使我们到了本文的结尾,在这里我们学习了如何将Python迭代器与示例一起使用。我希望您对本教程中与您共享的所有内容一清二楚。 

Python编程语言已经扩展了创新的方方面面,包括机器学习数据科学人工智能等。实现这一壮举的众多原因之一是Python迭代器之类的概念,而这些概念正是Python取得编程成功的基石。语。在本文中,我们将通过以下概念来理解Python迭代器:

迭代器与可迭代

Python中可以用作Iterable对象的对象称为Iterable。这基本上意味着可以迭代对象中的序列。大多数Python集合(例如listdictionarytuplesets,甚至range)都可以视为Iterable。

什么是Python迭代器?

Python I加速器是一个包含可数数量的值的容器。可以使用迭代器遍历容器中的值,尤其是列表。

除了遍历之外,迭代器还提供对容器中数据元素的访问,但它本身并不执行迭代,即,在使用该概念或琐碎使用术语时,没有一定程度的自由。Iterator的行为几乎类似于数据库游标。这是Python中Iterator的简单示例。

my_obj = {"Edureka", "Python", "iterator"}
iter_obj = iter(my_obj)
print(next(iter_obj))

输出:Edureka

迭代器是可以与“ for循环”一起使用的任何类型的Python。任何用作迭代器的对象都必须实现以下方法。

python中的迭代器-edureka

1. __iter __()

在初始化Iterator时调用它。它应该返回一个具有next或__next__方法的对象。

2. __next __()

Iterator的next方法返回Iterable的下一个值。

当Iterator与“ for in”循环一起使用时,在Iterator对象上,for循环隐式调用next()。此方法应使用StopIteration来指示迭代结束。这两种方法一起被称为迭代器协议。让我们尝试通过一个示例来了解for循环如何在Python中充当迭代器。

for i in object:
     print(i)

让我们了解for循环如何作为迭代器。

# create an iterator object from that iterable
iter_obj = iter(iterable)
 
# infinite loop
while True:
    try:
        # get the next item
        element = next(iter_obj)
        # do something with element
    except StopIteration:
        # if StopIteration is raised, break from loop
        break

现在我们知道了,for循环如何作为迭代器工作。让我们了解如何在Python中实现自定义迭代器。

自定义迭代器

现在让我们看一下如何在Python中实现自定义迭代器。为了理解这一点,我们将使用一个示例。在此示例中,我们将实现__iter __()和__next __()方法。

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    x = self.a
    self.a += 1
    return x
 
myclass = MyNumbers()
myiter = iter(myclass)
 
print(next(myiter))
print(next(myiter))
print(next(myiter))

输出:1

2

3

现在我们知道了如何实现自定义迭代器,让我们看一下Python中的无限迭代器。

无限迭代器

Iterator对象中的项目不一定要用尽。可以有无限个迭代器(永无休止)。这是一个演示无限迭代器的基本示例。

内置函数iter()可以使用两个参数来调用,其中第一个参数必须是可以调用的对象(函数),第二个必须是哨兵。迭代器将调用此函数,直到返回的值等于前哨值为止。

让我们以一个例子来理解这一点

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
  
  def __next__(self):
    x = self.a
    self.a += 1
    return x
  
myclass = MyNumbers()
myiter = iter(myclass)
  
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

输出:1
2
3
4
5

在上面的示例中,只要我们继续添加print语句,执行就会继续。要停止无限迭代器,我们需要使用stopIteration语句。

StopIteration

为了永远停止迭代,我们使用StopIteration语句。让我们通过一些示例来理解这一点。

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
  
  def __next__(self):
    if self.a <= 5:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration
  
myclass = MyNumbers()
myiter = iter(myclass)
  
for x in myiter:
  print(x)

输出:1
2
3
4
5

现在,如果if语句条件为false,则执行将移至else块,并且迭代将停止。现在,让我们看一下Python中的其他迭代器示例。

Python迭代器示例

这是Python中迭代器的更多示例。

my_obj = ["Edureka", "python", "iterator"]
iter_obj = iter(my_obj)
print(next(iter_obj))

输出:Edureka

在此示例中,我们将元组用作可迭代对象。

my_obj = ("Edureka", "python", "iterator")
iter_obj = iter(my_obj)
print(next(iter_obj))

输出:Edureka

我们甚至可以将字符串用作python中的可迭代对象。

my_obj = "Edureka"
iter_obj = iter(my_obj)
print(next(iter_obj))

输出:E

这使我们到了本文的结尾,在这里我们学习了如何将Python迭代器与示例一起使用。我希望您对本教程中与您共享的所有内容一清二楚。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享