Python 生成器推导

这篇具有很好参考价值的文章主要介绍了Python 生成器推导。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

生成器理解是在 python 中创建生成器的一种聪明而有效的方法。 它是定义生成器的单行规范,对于理解该语法以高效编码至关重要。

在本文中,我们将学习 python 的生成器和生成器理解以及示例。


Python 中的生成器

Python 中的生成器是返回可迭代或遍历对象的函数,用于创建一次遍历项目的迭代器。 生成器是使用预定义的 iter()next() 函数创建迭代器的一种简单易行的方法,以跟踪内部状态,它还负责处理 StopInteration 异常。

虽然在 Python 中创建迭代有很多复杂性,但您必须定义和实现 iter()next() 函数。 这是一个漫长的过程,但多亏了发电机。

让我们看一个 Python 生成器的例子。

# A simple generator function
def my_gen():
    n = 1
    print(f'This is line number {n}')
    # generator function always contains the 'yield' Keyword
    yield n

    n += 1
    print(f'This is line number {n}')
    yield n

    n += 1
    print(f'This is line number {n}')
    yield n

print(my_gen())

输出:

<generator object my_gen at 0x00000150EA43E448>

我们在上面的函数中使用了 yield 将值转换为生成器。 当我们打印 my_gen() 函数时,我们得到了可用于迭代生成器的函数对象。

让我们看一个迭代生成器的例子。

def even_nums():

    # create generator
    for i in range(11):
        if(i%2==0):
             yield i

print("This is the generator object of the generator function:",even_nums())

# iterate over the generator function
print("\nEven number from 0 to 11")
for i in even_nums():
    print(i, end= ", ")

输出:

This is the generator object of the generator function: <generator object even_nums at 0x05ACC2D0>

Even number from 0 to 11
0, 2, 4, 6, 8, 10,

Python生成器理解

生成器理解类似于 Python 中的列表理解; 但是,括号和方括号将它们区分开来。 我们可以使用 Python 中的生成器理解轻松创建一个简单的生成器,其工作方式类似于创建匿名函数的 lambda 函数。

生成器理解和列表理解之间的区别在于生成器理解同时创建一个项目,而列表理解同时创建整个列表。 生成器理解速度更快且内存效率更高。

让我们看一个 Python 中生成器理解的例子。

# generator comprehension in python
# take the square of each number from 1-6 and store it in 'gen'
gen = (x**2 for x in range(1,6))

print(gen) # return --> generator object

# iterate over the generator 'gen'
for i in gen:
    print(i, end=", ")

输出:

<generator object <genexpr> at 0x00000150EA43EC48>
1, 4, 9, 16, 25,

在上面的代码示例中,生成器表达式已按需生成所需的结果,但不是立即生成。 它返回生成器的对象,我们稍后使用该对象使用 for 循环遍历生成器。

您可以使用 next() 函数按顺序打印生成器的每个值,因为生成器会处理值的顺序和状态。

# generator comprehension in python
# take the square of each number from 1-6 and store it in 'gen'
gen = (x**2 for x in range(1,6))

# next()
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))

输出:

1
4
9
16
25

如您所见,我们正在使用 next() 获取按需值,它会处理值的序列,因为我在每个 next() 函数之后获取下一个值。文章来源地址https://www.toymoban.com/news/detail-492315.html

到了这里,关于Python 生成器推导的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python生成器generator的用法

    通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 所以,如果列表元素可以

    2024年02月04日
    浏览(60)
  • python游戏编程代码大全,python代码自动生成器

    大家好,给大家分享一下python游戏编程入门游戏代码,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 大家好,小编来为大家解答以下问题,python游戏代码大全可复制100行,python游戏代码大全可复制免费,今天让我们一起来看看吧! python有趣的编程代码

    2024年02月21日
    浏览(48)
  • Python教程(26)——Python迭代器和生成器详解

    Python中的迭代器是一种对象,它可以迭代(遍历)一个可迭代对象(比如列表、元组或字符串)的元素。迭代器用于实现迭代器协议,即包含 __iter__() 方法和 __next__() 方法。 迭代器的工作原理是每次调用 __next__() 方法时返回可迭代对象的下一个元素,当没有元素可迭代时,抛

    2024年02月19日
    浏览(43)
  • python之迭代器和生成器

    当谈到Python中的迭代时,迭代器和生成器是两个很常见的概念。在本教程中,我将帮助您理解Python中迭代器和生成器的工作原理及其实现方式。 迭代器 Python中的迭代器是一种特殊的对象,可以用于遍历可迭代对象中的所有元素。所有的迭代器都实现了 __iter__() 和 __next__() 方

    2023年04月18日
    浏览(54)
  • python3 生成器表达式

    在 Python3 中,生成器表达式是一种语言结构,它可以快速地创建一个可迭代对象。生成器表达式类似于列表推导式,但使用圆括号而不是方括号,并且返回的是一个生成器对象而不是一个列表。 在 Python3 中,生成器表达式有两种类型:生成器函数和生成器表达式。 生成器函

    2024年02月02日
    浏览(50)
  • 详解Python中的排列组合生成器

    在实际的开发场景中,经常需要遍历多个数组中的元素,将它们组合在一起使用。要取完所有可能的组合,最基本的方法是使用嵌套的循环,有多少个数组就嵌套多少层循环。嵌套循环是基本的原理,但不够简洁,Python中有更优雅的方式来实现这种功能。 在Python的内置模块

    2024年02月10日
    浏览(44)
  • Python小姿势 - ## Python中的迭代器与生成器

    Python中的迭代器与生成器 在Python中,迭代是一个非常重要的概念,迭代器和生成器是迭代的两种最常见的形式。那么,迭代器与生成器有何不同呢? 首先,我们先来了解一下迭代器。 迭代器是一种对象,它可以记住遍历的位置,并在每次访问时返回下一个元素。迭代器只能

    2024年02月04日
    浏览(54)
  • 8 python的迭代器和生成器

    概述         在上一节,我们介绍了Python的模块和包,包括:什么是模块、导入模块、自定义模块、__name__、什么是包、创建包、导入包等内容。在这一节中,我们将介绍Python的迭代器和生成器。在Python中,迭代器是一个非常重要的概念,它使得我们能够遍历一个序列而无

    2024年02月10日
    浏览(37)
  • Python中的迭代器与生成器

    在Python中,迭代器(Iterator)和生成器(Generator)是两种用于处理可迭代对象的重要工具。而可迭代对象包括列表,元组,字典,字符串等。 迭代器和生成器只能迭代一次,通常用于处理大型数据集,因为它们不会一次性加载所有数据到内存中,而是根据需要逐个生成值。

    2024年02月10日
    浏览(43)
  • Python迭代器与生成器研究记录

    迭代器肯定是可迭代对象,但是可迭代对象不一定是迭代器,生成器一定是迭代器,但是迭代器不一定是生成器 生成器是特殊的迭代器,所以生成器一定是迭代器,迭代器一定是可迭代对象 我们平常接触最多的对象中,字符串,字典,列表,集合,元组和open打开的文件对象

    2024年02月05日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包