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 - 快速入门到黑科技》