Python迭代对象、迭代器与生成器

关系图

在这里插入图片描述

1.可迭代对象(iterable)

一个具备__iter__()方法的对象,就是一个可迭代对象,但是要成为一个正常的可迭代对象那么就需要遵循协议。这个方法必须返

回一个迭代器。

可迭代协议: 含__iter__()方法。且可迭代对象中的__iter__()方法返回的是一个对应的迭代器。(如list对应的迭代器就是

list_iterator)

以下代码MyList 实现了__iter__方法,说明这个是一个可迭代对象,而不是一个迭代器。但这个不是一个真正的迭代对象,因为没

有返回一个迭代器,也就是没有遵循协议。
在这里插入图片描述
在这里插入图片描述

2.迭代器(iterator)

python学习交流Q群:906715085####
1.迭代是Python最强大的功能之一,是访问集合元素的一种方式。



2.迭代器是一个可以记住遍历的位置的对象。



3.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。



4.迭代器有两个基本的方法:iter() 和 next()。

 

在这里插入图片描述

  1. 字符串,列表或元组对象都可用于创建迭代器:

在这里插入图片描述
在这里插入图片描述

  1. 查看迭代器源码类,可以看到整个类实现了__iter__和__next__两个魔法方法。

在这里插入图片描述

3.生成器(generator)

 生成器是一种特殊的迭代器,不需要手动的编写__iter()__和__next()__方法,因为yeild关键字已经包含了这两种方法。

注意事项:

2.因为生成器(generator)一定是迭代器,所以生成器也是一种懒加载的模式生成值(即需要用的时候才会生成数据,不需要的时候不会生成)

1.生成器有两个实现方法:

a. 生成器表达式:将列表推导式的[]改成()即可得到生成器

b. 生成器函数:调用yield关键字即可。

在这里插入图片描述

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python迭代对象、迭代器与生成器 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 利用Python破解视频网站的VIP视频,终身会员不是梦

    一、前言 好想看电视啊!!没有会员,怎么办啊?想在线观看或下载爱奇艺、PPTV、优酷、网易公开课、腾讯视频、搜狐视频、乐视、土豆、A站、B站等主流视频网站的VIP视频?又不想充会员怎么办?今天给你分享Python小技巧,实现你的VIP看电视的梦想。 PS:本软件只用来交流学习,请勿用于商业用途。如涉及版权侵权等问题,请联系我,我会删除文章。我可是守法的好公民…

    Python开发 2023年4月2日
    00
  • 【无敌Python 】增强视频画质,就应该这么做

    原理 不知道大家小时候有没有玩过这个? 最早的动画就是这么形成的,记得小时候还有这种小书卖。 其实视频的原理也是这样,一个视频是由很多张图片组成的,一个图片是一帧。所以我们要对视频进行画质增强,可以拆分成对 每一帧的图片进行操作,这个操作我们在前面介绍过。 因此,对视频进行画质增强的方法可以分为三步:拆分->处理->合成。 拆分 我们在第一篇文章…

    Python开发 2023年4月2日
    00
  • Python 周期任务神器,太实用了

    前言 如果你想在Linux服务器上周期性地执行某个 Python 脚本,最出名的选择应该是 Crontab 脚本,但是 Crontab 具有以下缺点: 1.不方便执行秒级的任务。 2.当需要执行的定时任务有上百个的时候,Crontab的管理就会特别不方便。 另外一个选择是 Celery,但是 Celery 的配置比较麻烦,如果你只是需要一个轻量级的调度工具,…

    Python开发 2023年4月2日
    00
  • Python图片压缩处理

    前言 不知道有没有人跟我有一样的烦恼,有时候图片太大了占内存很烦,本来手机内存也就那么点,放一个图片稍微大一点的,都不 能放一个成百上千张,这不是很烦嘛。于是,这又让我来灵感了,既然图片给了我难题,那么我就来接受这样的挑战。所以,我 决定用python来试试可不可以压缩图片,不是不知道,一试就成功了,那么好的东西怎么能一个人独享呢,当然要分享出来给大 家呀~…

    Python开发 2023年4月2日
    00
  • 初学者必犯的10个Python错误

    前言 当我们开始学习Python时,我们会养成一些不良编码习惯,而更可怕的是我们连自己也不知道。 我们学习变成的过程中,大概有会这样的经历: 写的代码只能完成了一次工作,但后来再执行就会报错或者失败,令人感到懊恼, 或者偶然发现一个内置函数可以让你的工作更轻松时,瞬间豁然开朗。 我们中的大多数人仍然有很多使用Python的坏习惯,这些习惯在我们学习pytho…

    Python开发 2023年4月2日
    00
  • Python实现秒杀某宝商品抢购(附超详细代码)

    前言 618过去了,前两天我干了一件惊天动地的大事,估计这件大事是很多小伙伴都想干的。我居然用python抢购淘宝商品,没想到 吧,最勇敢的还是我。关于抢购的思路以及代码,我将会在这篇文章中详细的介绍,感兴趣的可以往下看哟!!! 目录 1.项目环境 2.某宝抢购流程分析 3.程序实现思路 4.代码实践与梳理   标题项目环境 •操作系统:Windows 10…

    Python开发 2023年4月2日
    00
  • Python实现简繁体转换,现在的人玩得老花了

    1、opencc-python 首先介绍opencc中的Python实现库,它具有安装简单,翻译准确,使用方便等优点。对于我们日常的需求完全能够胜任。 1.1安装opencc-python 首先在terminal中安装opencc-python。 pip install opencc-python   1.2内建的opencc翻译配置 这里有四种内建的ope…

    Python开发 2023年4月2日
    00
  • Python超好用的命令行界面实现工具,我保证你肯定不知道…

    前言 Click 是一个简洁好用的Python模块,它能用尽量少的代码实现漂亮的命令行界面。它不仅开箱即用、还能支持高度自定义的配 置。 官方文档:https://click.palletsprojects.com/en/8.0.x/   一个简单的示例如下: import click PYTHON插件/素材/源码加Q群:903971231#### @cli…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部