关于机器学习的三个阶段
595
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))
输出: 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小时内删除侵权内容。