企业网站模板演示,网站中图片中间是加号怎么做,乐清发布网,头条新闻文章目录 迭代器#xff1a;初探什么是迭代器#xff1f;通过迭代器进行迭代迭代器 for 循环的工作构建自定义迭代器Python 无限迭代器Python 迭代器的好处总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包… 文章目录 迭代器初探什么是迭代器通过迭代器进行迭代迭代器 for 循环的工作构建自定义迭代器Python 无限迭代器Python 迭代器的好处总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 迭代器初探
Python 学习的人都知道Python 中存在两种循环语句while 和 for。for 循环可以用于 Python 中的任何序列包括列表、元组、字符串。
\ for x in \[2013, 14, 15926\]: print(x, end )
...
2013 14 15926for x in (2021, 2022, 2023): print(x, end-)
...
2021-2022-2023-for x in HelloWorld: print(x, end )
...
H e l l o W o r l d实际上for 循环还能使用于任何可迭代对象。可迭代对象在 Python 中是新颖特别的概念但实际上就是序列概念的通用化如果对象时实际保存的序列或者可以在迭代工具中如 for 循环一次产生一个结果的对象就看做可迭代的。可以说Python 中迭代器无处不在。
什么是迭代器
Python 中的迭代器是一个对象用于迭代列表、元组、字典和集合等可迭代对象。Python 迭代器对象必须实现两个特殊的方法__iter__()和__next__()方法
使用 __iter__() 方法初始化迭代器对象使用 __next__() 方法进行迭代。
通过迭代器进行迭代
iter()函数依次调用 __iter__()方法返回一个迭代器。我们使用 next() 函数手动遍历迭代器的所有项。 当我们到达终点并且没有更多数据要返回时它将引发 StopIteration异常。
下面是一个例子:
\# define a list
my\_list \[2013, 14, 15926\]# get an iterator using iter()
my\_iter iter(my\_list)
# iterate through it using next()# Output: 2013
print(next(my\_iter))# Output: 14
print(next(my\_iter))# next(obj) is same as obj.\_\_next\_\_()
# Output: 15926
print(my\_iter.\_\_next\_\_())
# This will raise error, no items left
next(my\_iter)依次执行上面的代码输出如下 2013 14 15926 Traceback (most recent call last): File “”, line 24, in next(my_iter) StopIteration 一种更优雅的自动迭代方式是使用 for 循环。使用它我们可以迭代任何可以返回迭代器的对象例如列表、字符串、文件等。
\ for element in my\_list:
... print(element)
...
2013
14
15926迭代器 for 循环的工作
正如我们在上面的示例中看到的for 循环能够自动遍历列表。
实际上 for 循环可以迭代任何可迭代对象。让我们仔细看看 for 循环是如何在 Python 中实际实现的。
for element in iterable:
# do something with element实际实现为:
\# create an iterator object from that iterable
iter\_obj iter(iterable)# infinite loop
while True:
try:
# get the next item
element next(iter\_obj)
print(element)
# do something with element
except StopIteration:
# if StopIteration is raised, break from loop
break所以在内部for 循环通过在可迭代对象上调用 iter()创建一个迭代器对象 iter_obj。具有讽刺意味的是这个 for 循环实际上是一个无限的 while 循环。
在循环内部它调用 next()来获取下一个元素并使用该值执行 for 循环的主体。在所有项目耗尽后StopIteration被引发内部捕获并结束循环。请注意任何其他类型的异常都会通过。
构建自定义迭代器
在 Python 中从头开始构建迭代器很容易。我们只需要实现 __iter__() 和 __next__() 方法。
__iter__() 方法返回迭代器对象本身。如果需要可以执行一些初始化。
__next__() 方法必须返回序列中的下一项。在到达终点时以及在随后的调用中它必须引发 StopIteration。
class PowTwo:
Class to implement an iterator
of powers of two
def \_\_init\_\_(self, max0):
self.max maxdef \_\_iter\_\_(self):
self.n 0
return self
def \_\_next\_\_(self):
if self.n self.max:
result 2 \*\* self.n
self.n 1
return result
else:
raise StopIteration
# create an object
numbers PowTwo(3)
# create an iterable from the object
i iter(numbers)
# Using next to get to the next iterator element
print(next(i))
print(next(i))
print(next(i))
print(next(i))
print(next(i))输出结果 1 2 4 8 Traceback (most recent call last): File “/Users/yuzhou_1su/go/src/iterdemo.py”, line 32, in print(next(i)) StopIteration 我们还可以使用 for 循环来迭代我们的迭代器类。
\ for i in PowTwo(5):
... print(i)
...
1
2
4
8
16
32Python 无限迭代器
迭代器对象中的项目不必耗尽。可以有无限的迭代器永远不会结束。在处理此类迭代器时我们必须小心。
这是一个演示无限迭代器的简单示例。
内置函数 iter()可以使用两个参数调用其中第一个参数必须是可调用对象函数第二个参数是哨兵。迭代器调用这个函数直到返回的值等于哨兵。
\ int()
0inf iter(int,1)next(inf)
0next(inf)
0我们可以看到 int()函数总是返回 0。因此将它作为 iter(int,1)传递将返回一个迭代器该迭代器调用 int()直到返回值等于 1。这永远不会发生我们得到一个无限迭代器。
我们还可以构建自己的无限迭代器。
理论上以下迭代器将返回所有奇数:
class InfIter:
Infinite iterator to return all
odd numbersdef \_\_iter\_\_(self):
self.num 1
return selfdef \_\_next\_\_(self):
num self.num
self.num 2
return num\ a iter(InfIter())next(a)
1next(a)
3next(a)
5next(a)
7在对这些类型的无限迭代器进行迭代时请小心包含终止条件。如上所示我们可以得到所有奇数而无需将整个数字系统存储在内存中。理论上我们可以在有限的内存中拥有无限的项目。
Python 迭代器的好处
使用迭代器的好处是可以节省资源
代码减少。代码冗余得到极大解决。降低代码复杂度。它为编码带来了更多的稳定性。
总结
Python 的迭代器提供稳定和灵活的代码。迭代器和可迭代对象的区别
Iterable是一个可以迭代的对象。它在传递给 iter()方法时生成一个迭代器。Iterator是一个对象用于使用 __next__()方法对可迭代对象进行迭代。迭代器有 __next__() 方法它返回对象的下一项。
请注意每个迭代器也是一个可迭代的但不是每个可迭代的都是一个迭代器。
例如列表是可迭代的但列表不是迭代器。可以使用函数 iter() 从可迭代对象创建迭代器。
为了实现这一点对象的类需要一个方法 __iter__它返回一个迭代器或者一个具有从 0 开始的顺序索引的 __getitem__方法。但其本质也是实现了 __iter__方法。 关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料希望提供给想学习 Python 的小伙伴们一点帮助
保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 一、Python所有方向的学习路线
Python所有方向的技术点做的整理形成各个领域的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。
二、Python基础学习视频
② 路线对应学习视频
还有很多适合0基础入门的学习视频有了这些视频轻轻松松上手Python~在这里插入图片描述
③练习题
每节视频课后都有对应的练习题哦可以检验学习成果哈哈 因篇幅有限仅展示部分资料
三、精品Python学习书籍
当我学到一定基础有自己的理解能力的时候会去阅读一些前辈整理的书籍或者手写的笔记资料这些笔记详细记载了他们对一些技术点的理解这些理解是比较独到可以学到不一样的思路。
四、Python工具包项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了每个都有详细的安装教程保证你可以安装成功哦
②Python实战案例
光学理论是没用的要学会跟着一起敲代码动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。100实战案例源码等你来拿
③Python小游戏源码
如果觉得上面的实战案例有点枯燥可以试试自己用Python编写小游戏让你的学习过程中增添一点趣味
五、面试资料
我们学习Python必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有阿里大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。
六、Python兼职渠道
而且学会Python以后还可以在各大兼职平台接单赚钱各种兼职渠道兼职注意事项如何和客户沟通我都整理成文档了。 这份完整版的Python全套学习资料已经上传CSDN朋友们如果需要可以保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】