2024年最新2024Python面试总结,Python比较难的知识点 迭代器与生成器_python中最难的一部分,2024年最新快手Python面试

收集整理了一份《2024年最新Python全套学习资料》免费送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来

如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
img

正文

next: 作用于迭代器, 依次返回下一个元素

如果是自定义class, 可以通过函数__iter__, next, 定义这两种函数的行为.

iter只能用于可迭代的对象, 如下图, 标量数字"1024"就不能用来生成数字.
在这里插入图片描述
上图中, 试图将数字标量"1024"变成迭代器, 就会发生报错, 显示是"不可迭代的"

iter将可迭代的对象变成迭代器, 然后可以用next依次返回元素, 越界时, 会报错StopIteration, 类似于单向链表, 只能得到下一个元素, 不能返回上一个元素.
在这里插入图片描述
如上图所示, 通过iter, 将字符串"lihaitao"变成了一个迭代器, 然后通过next函数, 从左到右, 依次返回了单个字符, 最后会发现, 如果元素取完, 还要使用next函数的话, 就会报错.

为什么要这么做? 依次取出元素有什么好处?

1 节省内存, 每次生成一个元素, 而不是先计算出所有的元素, 保存下来.

2 提速. 因为内存更小

吐槽一下: 当然了, 因为这个例子特别简单, 好像无法体现出这些好处. 先记住, 以后接触到更复杂的例子, 就能体会到了.

生成器: 返回的对象是迭代器

生成器本质上定义了迭代器中元素的生成机制.

生成器分成了两种:

a 生成表达式

比如, (i * 2 for i in range(10))
在这里插入图片描述
上图的例子中, 通过for循环, 依次取得里面的元素.

好像没有什么特别的, 与列表生成器[i * 2 for i in range(10)] (注意一个是圆括号, 另一个是方括号)的结果好像是一样的.
在这里插入图片描述
结果是一样, 但是内部的原理差别很大.

(i * 2 for i in range(10))里面的原理是:

1 i 取值为0, 然后乘以2, 然后被for循环取出来, 打印.

2 i 取值为1, 然后乘以2, 然后被for循环取出来, 打印.

3 以此类推, 知道i取值为最后一个元素, 然后乘以2, 然后被for循环取出来, 打印.

[i * 2 for i in range(10)]里面的原理是:

先计算出所有的值: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

然后使用for循环, 依次取出这些值, 依次打印.

一句话概括的话, (i * 2 for i in range(10))是一边计算, 一边被取出, 而[i * 2 for i in range(10)]是先全部被计算出来, 然后被取出.

生成器的另一种形式:

b 生成函数

通过yield来返回下一个元素.

比如生成著名的斐波那契数列:

封面图片就是斐波那契数列的一个应用.

基于"生成函数", 生成斐波那契数列的代码:
在这里插入图片描述
运行结果:
在这里插入图片描述
看起来和普通函数差不多, 没有了return, 多了个关键词yield.

yield与return不同, 碰到了return, 函数直接结束了, 只能返回"0".

而yield是决定了每次next后返回什么元素.

调用第一次next的时候, 程序运行, 直到第一次碰到yield, 此时a = 0, next的返回元素就是0, 然后会保存程序所有的当前状态,

下一次调用next的时候, 在上次保存的状态下继续运行, 直到又碰到了yield, 此时a = 1, 因此, 第二次next返回的元素是1

以此类推.

如果打个类比的话, yield的那一行可以作为断点, 碰到了断点, 程序就中断了, 直到下一个next, 就继续执行代码.直到碰到下一个断点(yield)

最后,作为一个IT的过来人,我自己整理了一些学习资料,希望对你们有帮助。

在学习python中有任何困难不懂的可以微信扫描下方优快云官方认证二维码加入python交流学习
多多交流问题,互帮互助,这里有不错的学习教程和开发工具。

python兼职资源+python全套学习资料

点此免费领取:优快云大礼包:《python学习路线&全套学习资料》免费分享

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
的技术提升。**

如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
[外链图片转存中…(img-7WyYSZeY-1713812711944)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值