首页 > 编程语言 >如何系统的学习Python——迭代器和生成器

如何系统的学习Python——迭代器和生成器

时间:2024-03-17 15:31:42浏览次数:31  
标签:__ 迭代 Python 生成器 iter next my

在Python中,迭代器(Iterators)和生成器(Generators)是用于处理可迭代对象的重要工具。它们允许你按需产生值,而不是一次性生成所有值,从而在处理大量数据时更加高效。下面是关于迭代器和生成器的详细解释:

迭代器(Iterators):

  1. 可迭代对象: 在Python中,可迭代对象是实现了 __iter__() 方法的对象,例如列表、元组、字符串等。

  2. 迭代器对象: 迭代器是实现了 __iter__()__next__() 方法的对象。__iter__() 返回迭代器对象自身,__next__() 返回下一个值。

  3. 使用迭代器: 使用 iter() 函数获取可迭代对象的迭代器,并使用 next() 函数获取下一个值。

my_list = [1, 2, 3, 4, 5]
my_iter = iter(my_list)

print(next(my_iter))  # 输出: 1
print(next(my_iter))  # 输出: 2

生成器(Generators):

  1. 生成器函数: 生成器函数是包含 yield 语句的函数。当调用生成器函数时,它不会执行,而是返回一个生成器对象。

  2. 生成器对象: 生成器对象可以通过生成器函数的执行来按需生成值。每次调用 next() 时,生成器函数会执行到 yield 语句并返回一个值。

  3. 使用生成器: 使用生成器对象的 next() 方法按需生成值,或者使用 for 循环遍历所有值。

def my_generator():
    yield 1
    yield 2
    yield 3

gen = my_generator()

print(next(gen))  # 输出: 1
print(next(gen))  # 输出: 2

# 使用 for 循环遍历生成器
for value in gen:
    print(value)  # 输出: 3

生成器表达式:

除了使用生成器函数,还可以使用生成器表达式来创建简单的生成器。

gen_expr = (x for x in range(5))

for value in gen_expr:
    print(value)

生成器表达式类似于列表推导,但使用圆括号而不是方括号。它会按需生成值,而不是一次性生成所有值。

优势和应用场景:

  • 节省内存: 生成器一次只生成一个值,节省内存空间。

  • 适用于大数据集: 在处理大型数据集时,使用生成器可以避免一次性加载整个数据集。

  • 无限序列: 生成器可以表示无限序列,因为它们按需生成值。

  • 简化代码: 使用生成器可以简化代码逻辑,尤其是在需要逐步处理数据时。

总的来说,迭代器和生成器是Python中用于处理可迭代对象的强大工具,它们使得在处理大规模数据时更加高效和灵活。

标签:__,迭代,Python,生成器,iter,next,my
From: https://blog.csdn.net/SmiledrinkCat/article/details/136435989

相关文章

  • python一些函数用法
    1、性别defxb(x):ifpd.isnull(x):return"空"elifint(x[-2])%2==1:return"男"elifint(x[-2])%2==0:return"女"else:return"其他"deff(x):returnx.nunique()2、省份defprovince(x):ifstr(x)[0:2]=='11':......
  • 用python写网络爬虫:3.urllib库进一步的使用方法
    文章目录异常处理URLErrorHTTPError设置超时时间链接的解析、构造、合并urlparse方法urlsplit方法urljoin方法urlencode方法parse_qs方法quote方法Robots协议Robots协议的结构解析协议参考书籍在上一篇文章:用python写网络爬虫:2.urllib库的基本用法已经介绍了如......
  • Python基础语法
    Python目录-基础语法注释数据类型数据类型准换字面量变量数据输出数据输入标识符运算符判断语句循环语句注释单行注释#以#号开头,#号和注释内容建议以一个空格隔开多行注释"""以三个双引号引起来三个双信号之中写注释内容"""数据类型Python中常用......
  • Python运行环境的搭建(Window11操作系统)
    1.在浏览器搜索、登录http://www.python.org2.点击Downloads进入下载界面 3.点击DownloadPython3.12.0下载2023年最新版 提示:如果我们直接在此界面下载,下载速度会很慢(一秒十几kb),如果有时间可以选择等待半个小时直到下载完成。如果不想等那么久可以使用IDM(收费),或者迅......
  • harbor命令行-python脚本-调用http API
    因为生产环境没有UI界面,也没有开放端口资源出来,无法通过web界面来管理harbor,故调用harbor提供的httpAPI来获取harbor信息和使用常用的功能。importrequestsimportjsonimporturllib.parsemy_auth=('admin','Lovedan@971220')harbor_addr="https://127.0.0.1"def查询......
  • 全栈的自我修养 ———— python爬虫爬取斗破苍穹小说并保存到文档里!看完保证会灵活使
    如果赶时间请直接看第四大步中的源码,好好看完这篇博客,这里保证大家以后彻底搞懂获得一个网站怎么来爬取!!!!一、准备二、选入合适的爬取的目标1、如何看出网站做了反爬2、合适的网站三、理思路1、选择合适的页面2、选择合适的元素三、爬取1、获取所有章节的链接获取网站上......
  • Dynamo PythonScript 代码速查手册By九哥
    你好,这里是BIM的乐趣,我是九哥今天给大家带来的是我的知识工程的第二套知识库,这套知识库不是教程,是一套完整的笔记,里面包含了大量的Python代码。当然这里也没有实现太多的具体逻辑,单纯的是通过Python在Dynamo中实现一些RevitAPI的方法,我的目的就是省事,写代码的时......
  • AI回答记录:python中有重载与重写的概念吗?
    问:python中有重载与重写的概念吗?GPT4-turbo:在Python中,严格来说没有像其他一些编程语言(如Java、C++)那样的重载(Overloading)机制,但是可以通过其他方式实现类似的功能。Python中有重写(Overriding)的概念。重载(Overloading):Python不支持传统的方法重载,即在同一个类中定义多个同名......
  • Python实战:爬取小红书
    有读者在公众号后台询问爬取小红书,今天他来了。本文可以根据关键词,在小红书搜索相关笔记,并保存为excel表格。爬取的字段包括笔记标题、作者、笔记链接、作者主页地址、作者头像、点赞量。一、先看效果1、爬取搜索页2、爬取结果保存到本地excel表格运行我写的爬虫,......
  • Python中有重写和重载的方法吗?
    问1:Python中有重写和重载的方法吗?先说结论:Python因为语言的特性,没有重载,但是有重写的方法。问2:什么是重写?1.先看代码:classCalculator:defadd(self,a,b):print("我执行了吗?")returna+b+100defadd(self,a,b):returnflo......