HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    python文章生成器(python 文章生成器)

    发布时间:2023-04-16 09:53:06     稿源: 创意岭    阅读: 68        

    大家好!今天让创意岭的小编来大家介绍下关于python文章生成器的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    本文目录:

    python文章生成器(python 文章生成器)

    如何更好地理解Python迭代器和生成器

    Python这门语言中,生成器毫无疑问是最有用的特性之一。与此同时,也是使用的最不广泛的Python特
    性之一。究其原因,主要是因为,在其他主流语言里面没有生成器的概念。正是由于生成器是一
    个“新”的东西,所以,它一方面没有引起广大工程师的重视,另一方面,也增加了工程师的学习成本,
    最终导致大家错过了Python中如此有用的一个特性。
    我的这篇文章,希望通过简单易懂的方式,深入浅出地介绍Python的生成器,以改变“如此有用的特性却
    使用极不广泛”的现象。本文的组织如下:在第1章,我们简单地介绍了Python中的迭代器协议;在本文
    第2章,将会详细介绍生成器的概念和语法;在第3章,将会给出一个有用的例子,说明使用生成器的好
    处;在本文最后,简单的讨论了使用生成器的注意事项。
    1. 迭代器协议
    由于生成器自动实现了迭代器协议,而迭代器协议对很多人来说,也是一个较为抽象的概念。所以,为了
    更好的理解生成器,我们需要简单的回顾一下迭代器协议的概念。
    1. 迭代器协议是指:对象需要提供next方法,它要么返回迭代中的下一项,要么就引起一个
    StopIteration异常,以终止迭代
    2. 可迭代对象就是:实现了迭代器协议的对象
    3. 协议是一种约定,可迭代对象实现迭代器协议,Python的内置工具(如for循环,sum,min,max函
    数等)使用迭代器协议访问对象。
    举个例子:在所有语言中,我们都可以使用for循环来遍历数组,Python的list底层实现是一个数组,所
    以,我们可以使用for循环来遍历list。如下所示:
    >>> for n in [1, 2, 3, 4]:
    ... print n
    但是,对Python稍微熟悉一点的朋友应该知道,Python的for循环不但可以用来遍历list,还可以用来遍历
    文件对象,如下所示:
    >>> with open(‘/etc/passwd’) as f: # 文件对象提供迭代器协议
    ... for line in f: # for循环使用迭代器协议访问文件
    ... print line
    ...
    为什么在Python中,文件还可以使用for循环进行遍历呢?这是因为,在Python中,文件对象实现了迭代
    器协议,for循环并不知道它遍历的是一个文件对象,它只管使用迭代器协议访问对象即可。正是由于
    Python的文件对象实现了迭代器协议,我们才得以使用如此方便的方式访问文件,如下所示:
    >>> f = open('/etc/passwd')
    >>> dir(f)
    ['__class__', '__enter__', '__exit__', '__iter__', '__new__', 'writelines', '...'
    2. 生成器
    Python使用生成器对延迟操作提供了支持。所谓延迟操作,是指在需要的时候才产生结果,而不是立即产
    生结果。这也是生成器的主要好处。
    Python有两种不同的方式提供生成器:
    2017/11/6 如何更好地理解Python迭代器和生成器? - 知乎
    https://www.zhihu.com/question/20829330 2/5
    1. 生成器函数:常规函数定义,但是,使用yield语句而不是return语句返回结果。yield语句一次返回一
    个结果,在每个结果中间,挂起函数的状态,以便下次重它离开的地方继续执行
    2. 生成器表达式:类似于列表推导,但是,生成器返回按需产生结果的一个对象,而不是一次构建一个
    结果列表
    2.1 生成器函数
    我们来看一个例子,使用生成器返回自然数的平方(注意返回的是多个值):
    def gensquares(N):
    for i in range(N):
    yield i ** 2
    for item in gensquares(5):
    print item,
    使用普通函数:
    def gensquares(N):
    res = []
    for i in range(N):
    res.append(i*i)
    return res
    for item in gensquares(5):
    print item,
    可以看到,使用生成器函数代码量更少。
    2.2 生成器表达式
    使用列表推导,将会一次产生所有结果:
    >>> squares = [x**2 for x in range(5)]
    >>> squares
    [0, 1, 4, 9, 16]
    将列表推导的中括号,替换成圆括号,就是一个生成器表达式:
    >>> squares = (x**2 for x in range(5))
    >>> squares>>> next(squares)
    0
    >>> next(squares)
    1
    >>> next(squares)
    4
    >>> list(squares)
    [9, 16]
    Python不但使用迭代器协议,让for循环变得更加通用。大部分内置函数,也是使用迭代器协议访问对象
    的。例如, sum函数是Python的内置函数,该函数使用迭代器协议访问对象,而生成器实现了迭代器协
    2017/11/6 如何更好地理解Python迭代器和生成器? - 知乎
    https://www.zhihu.com/question/20829330 3/5
    议,所以,我们可以直接这样计算一系列值的和:
    >>> sum(x ** 2 for x in xrange(4))
    而不用多此一举的先构造一个列表:
    >>> sum([x ** 2 for x in xrange(4)])
    2.3 再看生成器
    前面已经对生成器有了感性的认识,我们以生成器函数为例,再来深入探讨一下Python的生成器:
    1. 语法上和函数类似:生成器函数和常规函数几乎是一样的。它们都是使用def语句进行定义,差别在
    于,生成器使用yield语句返回一个值,而常规函数使用return语句返回一个值
    2. 自动实现迭代器协议:对于生成器,Python会自动实现迭代器协议,以便应用到迭代背景中(如for
    循环,sum函数)。由于生成器自动实现了迭代器协议,所以,我们可以调用它的next方法,并且,
    在没有值可以返回的时候,生成器自动产生StopIteration异常
    3. 状态挂起:生成器使用yield语句返回一个值。yield语句挂起该生成器函数的状态,保留足够的信息,
    以便之后从它离开的地方继续执行
    3. 示例
    我们再来看两个生成器的例子,以便大家更好的理解生成器的作用。
    首先,生成器的好处是延迟计算,一次返回一个结果。也就是说,它不会一次生成所有的结果,这对于大
    数据量处理,将会非常有用。
    大家可以在自己电脑上试试下面两个表达式,并且观察内存占用情况。对于前一个表达式,我在自己的电
    脑上进行测试,还没有看到最终结果电脑就已经卡死,对于后一个表达式,几乎没有什么内存占用。
    sum([i for i in xrange(10000000000)])
    sum(i for i in xrange(10000000000))
    除了延迟计算,生成器还能有效提高代码可读性。例如,现在有一个需求,求一段文字中,每个单词出现
    的位置。
    不使用生成器的情况:
    def index_words(text):
    result = []
    if text:
    result.append(0)
    for index, letter in enumerate(text, 1):
    if letter == ' ':
    result.append(index)
    return result
    使用生成器的情况:
    2017/11/6 如何更好地理解Python迭代器和生成器? - 知乎
    https://www.zhihu.com/question/20829330 4/5
    def index_words(text):
    if text:
    yield 0
    for index, letter in enumerate(text, 1):
    if letter == ' ':
    yield index
    这里,至少有两个充分的理由说明 ,使用生成器比不使用生成器代码更加清晰:
    1. 使用生成器以后,代码行数更少。大家要记住,如果想把代码写的Pythonic,在保证代码可读性的前
    提下,代码行数越少越好
    2. 不使用生成器的时候,对于每次结果,我们首先看到的是result.append(index),其次,才是index。
    也就是说,我们每次看到的是一个列表的append操作,只是append的是我们想要的结果。使用生成
    器的时候,直接yield index,少了列表append操作的干扰,我们一眼就能够看出,代码是要返回
    index。
    这个例子充分说明了,合理使用生成器,能够有效提高代码可读性。只要大家完全接受了生成器的概念,
    理解了yield语句和return语句一样,也是返回一个值。那么,就能够理解为什么使用生成器比不使用生成
    器要好,能够理解使用生成器真的可以让代码变得清晰易懂。
    4. 使用生成器的注意事项
    相信通过这篇文章,大家已经能够理解生成器的作用和好处。但是,还没有结束,使用生成器,也有一点
    注意事项。
    我们直接来看例子,假设文件中保存了每个省份的人口总数,现在,需要求每个省份的人口占全国总人口
    的比例。显然,我们需要先求出全国的总人口,然后在遍历每个省份的人口,用每个省的人口数除以总人
    口数,就得到了每个省份的人口占全国人口的比例。
    如下所示:
    def get_province_population(filename):
    with open(filename) as f:
    for line in f:
    yield int(line)
    gen = get_province_population('data.txt')
    all_population = sum(gen)
    #print all_population
    for population in gen:
    print population / all_population
    执行上面这段代码,将不会有任何输出,这是因为,生成器只能遍历一次。在我们执行sum语句的时候,
    就遍历了我们的生成器,当我们再次遍历我们的生成器的时候,将不会有任何记录。所以,上面的代码不
    会有任何输出。
    因此,生成器的唯一注意事项就是:生成器只能遍历一次。
    5. 总结
    2017/11/6 如何更好地理解Python迭代器和生成器? - 知乎
    https://www.zhihu.com/question/20829330 5/5
    本文深入浅出地介绍了Python中,一个容易被大家忽略的重要特性,即Python的生成器。为了讲解生成
    器,本文先介绍了迭代器协议,然后介绍了生成器函数和生成器表达式,并通过示例演示了生成器的优点
    和注意事项。在实际工作中,充分利用Python生成器,不但能够减少内存使用,还能够提高代码可读性。
    掌握生成器也是Python高手的标配。希望本文能够帮助大家理解Python的生成器

    如何编写Python文档生成器

    一、启动“自动编写摘要”功能
    Word 97/2000/XP/2003均支持此项功能,用Word打开需要编辑的论文后,在“工具”菜单选择“自动编写摘要”即可弹出对话框。如果安装的不是Word的完整版,系统会提示放入Office的安装盘进行此功能项的安装。
    二、功能设置简介
    Word本身提供了四种不同类型的摘要可供选择。下面分别说明:
    1.突出显示要点:选择该项的话,Word将对论文进行分析摘录,将其中的中心句和关键词语用反白形式在原文档中突出显示。
    特点:简明扼要,突出重点。
    2.在文档顶端插入摘要或摘录文字:由Word自动摘录论文要点,并将摘要自动放置于论文之前,正文部分保持不变。
    特点:大部分论文都采用了这种格式,当然也要选择此项了。
    3.新建一篇文档并将摘要置于其中:用摘录的关键词句自动生成一篇新文档。
    特点:原文档无任何形式的改变。
    4.在不退出原文档的情况下隐藏除摘要以外的其它内容:将Word搜索到的关键语句和重点词语单独留下,自动隐藏文档中其它内容。
    特点:更适合阅读长篇文档,文章的主要观点一目了然。
    三、细节设置
    在论文摘要类型完成之后,就需要对论文摘要的细节进行调整了。
    在“摘要长度”的选项中可以设置论文摘要的长短;单击下拉箭头有三种选择:按句数、字数和所占的比例。
    小贴士:如果论文的每一个点比较集中,摘要文字在文中各段中分布较均匀,百分比可以取小些,如5%左右。如果比较分散,值可以取大些,如15%。
    四、摘要的修改
    如果你选择的是第一种摘要,经过上述设置,你感觉摘要还不直观,还可以在弹出的“自动编写摘要”的悬浮框上,直接调节左/右小箭头来逐渐减小/增大摘要的比例大小;而且同时你还可以通过单击最左边的图标在“突出显示”和“只显示摘要”的效果切换中进行查看,这是不是很直观啊!设置完成后,单击“确定”退出即可。

    以上就是关于python文章生成器相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    python搜索框推荐词(python 搜索引擎)

    happybirthday花体粘贴复制(happybirthdaytome花体可复制)

    happynewyear兔年花体字(happy newyear花体)

    广告公司全案策划(广告公司全案策划案例)

    五个关于短视频的推广方法