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

网友投稿 571 2022-05-30

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

Iterator vs Iterable

What Are Python Iterators?

Custom Iterators

Infinite Iterators

StopIteration

Python Iterator Examples

迭代器与可迭代

Python中可以用作Iterable对象的对象称为Iterable。这基本上意味着可以迭代对象中的序列。大多数Python集合(例如list,dictionary,tuple,sets,甚至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。任何用作迭代器的对象都必须实现以下方法。

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))

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

输出: 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迭代器与示例一起使用。我希望您对本教程中与您共享的所有内容一清二楚。

Python 容器

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpingMVC的常用注解
下一篇:云合同电子合同:电子印章行业怎么样?电子签章发展前景如何?
相关文章