HOME 首頁
SERVICE 服務產品
XINMEITI 新媒體代運營
CASE 服務案例
NEWS 熱點資訊
ABOUT 關于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    文章生成器知乎(文章生成器知乎怎么用)

    發(fā)布時間:2023-04-16 06:42:12     稿源: 創(chuàng)意嶺    閱讀: 65        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于文章生成器知乎的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。

    開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等

    只需要輸入關鍵詞,就能返回你想要的內容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端

    官網(wǎng):https://ai.de1919.com

    本文目錄:

    文章生成器知乎(文章生成器知乎怎么用)

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

    Python這門語言中,生成器毫無疑問是最有用的特性之一。與此同時,也是使用的最不廣泛的Python特
    性之一。究其原因,主要是因為,在其他主流語言里面沒有生成器的概念。正是由于生成器是一
    個“新”的東西,所以,它一方面沒有引起廣大工程師的重視,另一方面,也增加了工程師的學習成本,
    最終導致大家錯過了Python中如此有用的一個特性。
    我的這篇文章,希望通過簡單易懂的方式,深入淺出地介紹Python的生成器,以改變“如此有用的特性卻
    使用極不廣泛”的現(xiàn)象。本文的組織如下:在第1章,我們簡單地介紹了Python中的迭代器協(xié)議;在本文
    第2章,將會詳細介紹生成器的概念和語法;在第3章,將會給出一個有用的例子,說明使用生成器的好
    處;在本文最后,簡單的討論了使用生成器的注意事項。
    1. 迭代器協(xié)議
    由于生成器自動實現(xiàn)了迭代器協(xié)議,而迭代器協(xié)議對很多人來說,也是一個較為抽象的概念。所以,為了
    更好的理解生成器,我們需要簡單的回顧一下迭代器協(xié)議的概念。
    1. 迭代器協(xié)議是指:對象需要提供next方法,它要么返回迭代中的下一項,要么就引起一個
    StopIteration異常,以終止迭代
    2. 可迭代對象就是:實現(xiàn)了迭代器協(xié)議的對象
    3. 協(xié)議是一種約定,可迭代對象實現(xiàn)迭代器協(xié)議,Python的內置工具(如for循環(huán),sum,min,max函
    數(shù)等)使用迭代器協(xié)議訪問對象。
    舉個例子:在所有語言中,我們都可以使用for循環(huán)來遍歷數(shù)組,Python的list底層實現(xiàn)是一個數(shù)組,所
    以,我們可以使用for循環(huán)來遍歷list。如下所示:
    >>> for n in [1, 2, 3, 4]:
    ... print n
    但是,對Python稍微熟悉一點的朋友應該知道,Python的for循環(huán)不但可以用來遍歷list,還可以用來遍歷
    文件對象,如下所示:
    >>> with open(‘/etc/passwd’) as f: # 文件對象提供迭代器協(xié)議
    ... for line in f: # for循環(huán)使用迭代器協(xié)議訪問文件
    ... print line
    ...
    為什么在Python中,文件還可以使用for循環(huán)進行遍歷呢?這是因為,在Python中,文件對象實現(xiàn)了迭代
    器協(xié)議,for循環(huán)并不知道它遍歷的是一個文件對象,它只管使用迭代器協(xié)議訪問對象即可。正是由于
    Python的文件對象實現(xiàn)了迭代器協(xié)議,我們才得以使用如此方便的方式訪問文件,如下所示:
    >>> 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. 生成器函數(shù):常規(guī)函數(shù)定義,但是,使用yield語句而不是return語句返回結果。yield語句一次返回一
    個結果,在每個結果中間,掛起函數(shù)的狀態(tài),以便下次重它離開的地方繼續(xù)執(zhí)行
    2. 生成器表達式:類似于列表推導,但是,生成器返回按需產生結果的一個對象,而不是一次構建一個
    結果列表
    2.1 生成器函數(shù)
    我們來看一個例子,使用生成器返回自然數(shù)的平方(注意返回的是多個值):
    def gensquares(N):
    for i in range(N):
    yield i ** 2
    for item in gensquares(5):
    print item,
    使用普通函數(shù):
    def gensquares(N):
    res = []
    for i in range(N):
    res.append(i*i)
    return res
    for item in gensquares(5):
    print item,
    可以看到,使用生成器函數(shù)代碼量更少。
    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不但使用迭代器協(xié)議,讓for循環(huán)變得更加通用。大部分內置函數(shù),也是使用迭代器協(xié)議訪問對象
    的。例如, sum函數(shù)是Python的內置函數(shù),該函數(shù)使用迭代器協(xié)議訪問對象,而生成器實現(xiàn)了迭代器協(xié)
    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 再看生成器
    前面已經(jīng)對生成器有了感性的認識,我們以生成器函數(shù)為例,再來深入探討一下Python的生成器:
    1. 語法上和函數(shù)類似:生成器函數(shù)和常規(guī)函數(shù)幾乎是一樣的。它們都是使用def語句進行定義,差別在
    于,生成器使用yield語句返回一個值,而常規(guī)函數(shù)使用return語句返回一個值
    2. 自動實現(xiàn)迭代器協(xié)議:對于生成器,Python會自動實現(xiàn)迭代器協(xié)議,以便應用到迭代背景中(如for
    循環(huán),sum函數(shù))。由于生成器自動實現(xiàn)了迭代器協(xié)議,所以,我們可以調用它的next方法,并且,
    在沒有值可以返回的時候,生成器自動產生StopIteration異常
    3. 狀態(tài)掛起:生成器使用yield語句返回一個值。yield語句掛起該生成器函數(shù)的狀態(tài),保留足夠的信息,
    以便之后從它離開的地方繼續(xù)執(zhí)行
    3. 示例
    我們再來看兩個生成器的例子,以便大家更好的理解生成器的作用。
    首先,生成器的好處是延遲計算,一次返回一個結果。也就是說,它不會一次生成所有的結果,這對于大
    數(shù)據(jù)量處理,將會非常有用。
    大家可以在自己電腦上試試下面兩個表達式,并且觀察內存占用情況。對于前一個表達式,我在自己的電
    腦上進行測試,還沒有看到最終結果電腦就已經(jīng)卡死,對于后一個表達式,幾乎沒有什么內存占用。
    sum([i for i in xrange(10000000000)])
    sum(i for i in xrange(10000000000))
    除了延遲計算,生成器還能有效提高代碼可讀性。例如,現(xiàn)在有一個需求,求一段文字中,每個單詞出現(xiàn)
    的位置。
    不使用生成器的情況:
    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. 使用生成器以后,代碼行數(shù)更少。大家要記住,如果想把代碼寫的Pythonic,在保證代碼可讀性的前
    提下,代碼行數(shù)越少越好
    2. 不使用生成器的時候,對于每次結果,我們首先看到的是result.append(index),其次,才是index。
    也就是說,我們每次看到的是一個列表的append操作,只是append的是我們想要的結果。使用生成
    器的時候,直接yield index,少了列表append操作的干擾,我們一眼就能夠看出,代碼是要返回
    index。
    這個例子充分說明了,合理使用生成器,能夠有效提高代碼可讀性。只要大家完全接受了生成器的概念,
    理解了yield語句和return語句一樣,也是返回一個值。那么,就能夠理解為什么使用生成器比不使用生成
    器要好,能夠理解使用生成器真的可以讓代碼變得清晰易懂。
    4. 使用生成器的注意事項
    相信通過這篇文章,大家已經(jīng)能夠理解生成器的作用和好處。但是,還沒有結束,使用生成器,也有一點
    注意事項。
    我們直接來看例子,假設文件中保存了每個省份的人口總數(shù),現(xiàn)在,需要求每個省份的人口占全國總人口
    的比例。顯然,我們需要先求出全國的總人口,然后在遍歷每個省份的人口,用每個省的人口數(shù)除以總人
    口數(shù),就得到了每個省份的人口占全國人口的比例。
    如下所示:
    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
    執(zhí)行上面這段代碼,將不會有任何輸出,這是因為,生成器只能遍歷一次。在我們執(zhí)行sum語句的時候,
    就遍歷了我們的生成器,當我們再次遍歷我們的生成器的時候,將不會有任何記錄。所以,上面的代碼不
    會有任何輸出。
    因此,生成器的唯一注意事項就是:生成器只能遍歷一次。
    5. 總結
    2017/11/6 如何更好地理解Python迭代器和生成器? - 知乎
    https://www.zhihu.com/question/20829330 5/5
    本文深入淺出地介紹了Python中,一個容易被大家忽略的重要特性,即Python的生成器。為了講解生成
    器,本文先介紹了迭代器協(xié)議,然后介紹了生成器函數(shù)和生成器表達式,并通過示例演示了生成器的優(yōu)點
    和注意事項。在實際工作中,充分利用Python生成器,不但能夠減少內存使用,還能夠提高代碼可讀性。
    掌握生成器也是Python高手的標配。希望本文能夠幫助大家理解Python的生成器

    有哪些適合寫作素材收集的應用值得推薦?

      1.作文紙條:

    每天都會推薦一條句子,正面是句子,反面是一些解析,每天都可以積累。

      2.句子迷:

    里面有各種各樣的名言、原創(chuàng)句子,甚至還有電影電視劇啥的經(jīng)典臺詞,很多勵志的,適合寫作文用的。

      3.微博:

    可以直接搜索里搜索關鍵詞查找,也可以關注相關的博主。

      4.微信:

    很多公眾號都推送好的文章。講解一些自己對作文的理解。

    自己學校有一個老師自己開的公眾號,感興趣的可以看一看,挺有文采的 為文之道

      5.南方人物周刊:

    就是雜志的電子版,現(xiàn)在更新到很多期了,每期都會介紹一些偉大的人,很多可以往作文上寫,也長知識。

    積累這些,抄自己喜歡的句子,看自己喜歡的人物,自己可以專門準備一個本子,抄上去,自己看透了理解它,每天都看看,記住,這樣才算沒有白抄。

      6.句讀(dou):

    每天更新一個句子,加上配圖,可以關注自己喜歡的用戶,還可以看到喜歡的文章。

      7.一個:

    是由韓寒監(jiān)制的一款軟件,句讀有點類似,缺點是有廣告,優(yōu)點是有電臺。

      8.MONO:

    這款軟件涵蓋了更多有意思的東西,文字、音樂、圖畫、視頻乃至新聞。

      9.讀者:

    也是雜志的電子版,讀者這本雜志應該都看過,軟件里一般新出刊的都不是免費的,但是以前的一般都可以看,如果不著急就可以慢慢看了。

    什么是挑戰(zhàn)杯

    挑戰(zhàn)杯是個系列競賽,包括全國大學生課外學術科技作品競賽和全國大學生創(chuàng)業(yè)計劃競賽,明年是創(chuàng)業(yè)計劃競賽,主要給你解釋一下創(chuàng)業(yè)競賽把。
    創(chuàng)業(yè)計劃競賽起源于美國,又稱商業(yè)計劃競賽,是風靡全球高校的重要賽事。它借用風險投資的運作模式,要求參賽者組成優(yōu)勢互補的競賽小組,提出一項具有市場前景的技術、產品或者服務,并圍繞這一技術、產品或服務,以獲得風險投資為目的,完成一份完整、具體、深入的創(chuàng)業(yè)計劃。
     “挑戰(zhàn)杯”創(chuàng)業(yè)計劃競賽采取學校、?。ㄗ灾螀^(qū)、直轄市)和全國三級賽制,分預賽、復賽、決賽三個賽段進行。大力實施"科教興國"戰(zhàn)略,努力培養(yǎng)廣大青年的創(chuàng)新、創(chuàng)業(yè)意識,造就一代符合未來挑戰(zhàn)要求的高素質人才,已經(jīng)成為實現(xiàn)中華民族偉大復興的時代要求。作為學生科技活動的新載體,創(chuàng)業(yè)計劃競賽在培養(yǎng)復合型、創(chuàng)新型人才,促進高校產學研結合,推動國內風險投資體系建立方面發(fā)揮出越來越積極的作用。
    “挑戰(zhàn)杯”全國競賽是由共青團中央、中國科協(xié)、教育部、全國學聯(lián)聯(lián)合主辦的大學生科技活動中一項具有導向性、示范性和群眾性的競賽活動,每兩年舉辦一屆。 課外學術科技作品競賽和創(chuàng)業(yè)計劃競賽輪流交叉開展。

    以上就是關于文章生成器知乎相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內容。


    推薦閱讀:

    長文章圖片怎么制作出來的(長文章圖片怎么制作出來的視頻)

    文章生成器真的假的(文章生成器真的假的怎么弄)

    免費原創(chuàng)文章生成器破解版(免費原創(chuàng)文章生成器破解版下載)

    上海比斯特購物村景觀設計(上海比斯特購物村景觀設計招聘)

    只有初中學歷怎么考大專