从零开始学python | Python迭代器:什么是Python中的迭代器,以及如何使用它?
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迭代器与示例一起使用。我希望您对本教程中与您共享的所有内容一清二楚。
- 点赞
- 收藏
- 关注作者
评论(0)