《Python数据科学指南》——1.9 生成一个迭代器和生成器

简介:

本节书摘来自异步社区《Python数据科学指南》一书中的第1章,第1.9节,作者[印度] Gopi Subramanian ,方延风 刘丹 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.9 生成一个迭代器和生成器

上一节,我们了解了什么是迭代器,这一节我们来讨论如何生成一个迭代器。

1.9.1 准备工作

生成器提供了清晰的语法,能够依次访问一个序列,并不需要使用__iter__和next()这两个函数。我们也不用写一个类了。请注意,生成器和可迭代这两者才能制造一个迭代器。

1.9.2 操作方法

如果你理解了前面小节里的推导,我们下面的示例你也能明白,在这个示例中,我们有一个生成器推导。回忆一下,我们曾经用下面的方式来进行一个元组推导,并得到了一个生成器对象。

SimpleCounter  = (x**2 for x in range(1,10))

tot = 0
for val in SimpleCounter:
     tot+=val

print tot

1.9.3 工作原理

很明显,上面的代码片段将算出给定范围的数的平方和,本例中的范围是从1到9(Python的range函数是右侧结束),使用生成器,我们创建了一个名为SimpleCounter的迭代器,我们用它在for循环中循序访问那些潜在的数据。请注意我们现在没有使用iter()函数,代码十分清晰,我们成功地用一种优雅的方式重建了我们的旧SimpleCounter类。

1.9.4 更多内容

让我们看看如何使用yield语句来创建一个生成器。

def my_gen(low,high):
     for x in range(low,high):
          yield x**2

tot = 0     

for val in my_gen(1,10):
     tot+=val
print tot

在上面的代码中,my_gen()函数就是一个生成器,我们使用yield语句来返回一个序列输出。

在前面的小节中,我们提到过生成器和可迭代两者才能制造一个迭代器,下面我们通过使用iter函数调用生成器来验证一下。

gen = (x**2 for x in range(1,10))

for val in iter(gen):
     print val

在我们进入下一节“使用可迭代对象”之前,强调一下使用生成器的注意事项,当我们完成对序列的访问时,就该立刻结束,不要再试图获取更多的数据。

使用生成器对象时,我们只能访问序列一次。

相关文章
|
9天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
10天前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
5月前
|
机器学习/深度学习 数据可视化 数据处理
从基础到进阶:探索Python在数据科学中的应用
【10月更文挑战第18天】从基础到进阶:探索Python在数据科学中的应用
75 1
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
Python 数据分析:从零开始构建你的数据科学项目
【10月更文挑战第9天】Python 数据分析:从零开始构建你的数据科学项目
94 2
|
4月前
|
大数据 数据处理 开发者
Python中的迭代器和生成器:不仅仅是语法糖####
本文探讨了Python中迭代器和生成器的深层价值,它们不仅简化代码、提升性能,还促进了函数式编程风格。通过具体示例,揭示了这些工具在处理大数据、惰性求值及资源管理等方面的优势。 ####
|
5月前
|
存储 索引 Python
Python生成器、装饰器、异常(2)
【10月更文挑战第16天】
71 1
Python生成器、装饰器、异常(2)
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
Python在数据科学中的应用:从入门到实践
本文旨在为读者提供一个Python在数据科学领域应用的全面概览。我们将从Python的基础语法开始,逐步深入到数据处理、分析和可视化的高级技术。文章不仅涵盖了Python中常用的数据科学库,如NumPy、Pandas和Matplotlib,还探讨了机器学习库Scikit-learn的使用。通过实际案例分析,本文将展示如何利用Python进行数据清洗、特征工程、模型训练和结果评估。此外,我们还将探讨Python在大数据处理中的应用,以及如何通过集成学习和深度学习技术来提升数据分析的准确性和效率。
|
4月前
|
数据采集 数据可视化 数据处理
Python数据科学:Pandas库入门与实践
Python数据科学:Pandas库入门与实践
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
Python数据科学实战:从Pandas到机器学习
Python数据科学实战:从Pandas到机器学习
|
4月前
|
机器学习/深度学习 数据可视化 数据处理
Python数据科学:从基础到实战
Python数据科学:从基础到实战
65 1

热门文章

最新文章