Python小姿势 - ## Python中的迭代器与生成器

news/2024/11/23 2:06:40/

Python中的迭代器与生成器

在Python中,迭代是一个非常重要的概念,迭代器和生成器是迭代的两种最常见的形式。那么,迭代器与生成器有何不同呢?

首先,我们先来了解一下迭代器。

迭代器是一种对象,它可以记住遍历的位置,并在每次访问时返回下一个元素。迭代器只能往前不会后退。

要创建一个迭代器,我们可以使用内置的iter()函数。

举个例子:

```python l = [1, 2, 3, 4] it = iter(l) print(next(it)) print(next(it)) print(next(it)) print(next(it))

```

结果如下:

```python 1 2 3 4

```

迭代器有两个基本的方法,一个是iter()方法,一个是next()方法。

iter()方法可以接受一个可迭代对象,并返回一个迭代器。

next()方法可以返回迭代器的下一个元素。

当我们使用for循环遍历一个列表时,实际上就是不断调用迭代器的next()方法来实现的。

举个例子:

```python l = [1, 2, 3, 4] for i in l: print(i)

```

结果如下:

```python 1 2 3 4

```

可以看到,for循环的本质就是不断调用迭代器的next()方法来实现的。

那么,什么是生成器呢?

生成器是一种迭代器,但是它并不保存所有的值,而是在每次迭代时动态生成值。

要创建一个生成器,我们可以使用生成器表达式。

举个例子:

```python l = [1, 2, 3, 4] g = (i for i in l) print(next(g)) print(next(g)) print(next(g)) print(next(g))

```

结果如下:

```python 1 2 3 4

```

可以看到,生成器表达式的本质就是一个迭代

顺便介绍一下我的另一篇专栏, 《100天精通Python - 快速入门到黑科技》专栏,是由 CSDN 内容合伙人丨全站排名 Top 4 的硬核博主 不吃西红柿 倾力打造。 基础知识篇以理论知识为主,旨在帮助没有语言基础的小伙伴,学习我整理成体系的精华知识,快速入门构建起知识框架;黑科技应用篇以实战为主,包括办公效率小工具、爬虫、数据分析、机器学习、计算机视觉、自然语言处理、数据可视化等等,让你会用一段简单的Python程序,自动化解决工作和生活中的问题,甚至成为红客。

🍅 订阅福利原价299,限时1折订阅专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导/学习方法指引),群里大佬可以抱团取暖(大厂/外企内推机会)

🍅 订阅福利简历指导、招聘内推、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等

🍅 专栏地址: 点击《100天精通Python - 快速入门到黑科技》

100天精通Python - 订阅福利


http://www.ppmy.cn/news/59470.html

相关文章

Kubernetes云原生实战05 一键安装三主三从高可用集群

大家好,我是飘渺。 今天咱们继续更新Kubernetes云原生实战系列,本节文章会使用Kubekey安装一个三主三从的高可用集群。 在开始之前请分别登录kubernets集群节点,分别修改节点的主机名,跟第一章中提到的节点规划表保持一致。 hostnamectl set-hostname k8s-master1 hostn…

Activiti7流程操作详解

一、Activiti流程操作步骤 定义流程,按照BPMN的规范,使用流程定义工具,用流程符号把整个流程描述出来 部署流程,把画好的流程定义文件,加载到数据库中,生成表的数据 启动流程,使用java代码来操…

日志打印最佳实践

日志打印最佳实践 标题为什么要记录日志? 打印调试:用日志来记录变量或者某一段逻辑,记录程序运行的流程,即程序运行了哪些代码,方便排查逻辑问题。 问题定位:程序出异常或者出故障时快速的定位问题,方…

Django之定时任务django-crontab

Django之定时任务django-crontab crontab安装django-crontab注册应用定时时间格式定时时间示例设置定时任务符号方法解决crontab中文问题管理定时任务注意 crontab Django可以使用第三方库如django-crontab来实现定时任务的调度。该库允许使用类似于crontab文件格式的语法指定任…

刚进入职场还在实习期的java程序员该注意什么,我总结了五点经验

作为一名职场新人,进入公司后需要注意很多事项。今天,我想和大家分享一些我在实习和工作中得到的经验,总结了5点,希望对大家有所帮助。 第一点,学会积极沟通。在公司内部,特别是在互联网公司,大…

【SPSS】相关分析和偏相关分析详细操作过程(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

浅谈之Java多线程

Java多线程是Java语言中一个非常重要的特性,它允许程序同时执行多个任务。通过多线程,程序可以同时处理多项任务,从而缩短程序的执行时间。另外,多线程也有助于利用多核处理器,更好地发挥计算机硬件的性能。 那我们在…

Python项目实战篇——常用验证码标注和识别(需求分析和实现思路)

前言:验证码识别和标注是现在网络安全中的一个重要任务,尤其是在一些电商平台和在线支付等场景中,验证码的安全性至关重要。本文将介绍如何使用Python实现常用的验证码标注和识别,以便为自己的项目提供参考。 一、需求分析 1、验证…