最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python之yield和Generator深入解析

 更新時間:2019年09月18日 11:13:30   作者:郭雪原  
這篇文章主要介紹了python之yield和Generator深入解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

首先我們從一個小程序導入,各定一個list,找出其中的素數,我們會這樣寫

import math
def is_Prims(number):
  if number == 2:
    return True
  //除2以外的所有偶數都不是素數
  elif number % 2 == 0:
    return False
  //如果一個數能被除1和本身之外的數整除,則為合數。其實我們的判定范圍到根號n就可以
  for cur in range(2,int(math.sqrt(number))+1,2):
    if number % cur == 0:
      return False
    else:
      return True
def get_Prims(input_list):

  result_list = list()
  for element in input_list:
    if is_Prims(element):
      result_list.append(element)
  return result_list
aa = get_Prims([1,2,3,4,5,6,7,8,9])
print (aa)

但如果我們想給定一個數,然后列出比這個數大的所有素數呢?我們可能這樣寫:

def get_Prims(number):
  if is_Prims(number):
    return number

但是一旦return函數將控制權交給調用者后徹底結束,任何局部變量和函數工作都被丟棄,下一次調用又會從頭開始。因此我們就可以用一下寫法:

def get_Prims(number):
  while(True):
    if is_Prims(number):
      yield number
    number += 1
def get_numbers():
  total = list()
  for next_prim in get_Prims(2):
    if next_prim < 100:
      total.append(next_prim)
    else:
      print(total)
      return
get_numbers()

下面解釋一下generator函數,一個函數的def代碼里包含了yield,函數就自動成為了一個generator函數(及時仍包含有return),generator函數創(chuàng)建generator(一種特殊形式的迭代器,這個迭代器有一個內置__next__()方法),當需要一個值的時候通過yield來產生而不是直接return,因此與一般函數不同的是,此時控制權并未交出。

for循環(huán)會隱式的調用next()函數,next()函數負責調用generator中的__next__()方法,此時generator負責返回一個值給任何調用next()的方法,利用yield將此值傳回去,相當于return語句。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • keras訓練淺層卷積網絡并保存和加載模型實例

    keras訓練淺層卷積網絡并保存和加載模型實例

    這篇文章主要介紹了keras訓練淺層卷積網絡并保存和加載模型實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python多線程中獲取函數返回值的三種方法

    python多線程中獲取函數返回值的三種方法

    本文主要介紹了python多線程中獲取函數返回值的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • python實現圖像隨機裁剪的示例代碼

    python實現圖像隨機裁剪的示例代碼

    這篇文章主要介紹了python實現圖像隨機裁剪的示例代碼,幫助大家更好的理解和使用python處理圖片,感興趣的朋友可以了解下
    2020-12-12
  • 淺談django開發(fā)者模式中的autoreload是如何實現的

    淺談django開發(fā)者模式中的autoreload是如何實現的

    下面小編就為大家?guī)硪黄獪\談django開發(fā)者模式中的autoreload是如何實現的。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 基于python實現對文件進行切分行

    基于python實現對文件進行切分行

    這篇文章主要介紹了基于python實現對文件進行切分行,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • python使用xlrd模塊讀取excel的方法實例

    python使用xlrd模塊讀取excel的方法實例

    Python讀取Excel表格,相比xlwt來說,xlrd提供的接口比較多,下面這篇文章主要給大家介紹了關于python使用xlrd模塊讀取excel的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • Python bisect_left 函數使用場景詳解

    Python bisect_left 函數使用場景詳解

    在Python的編程世界中,數據處理和搜索操作是非常常見的任務,bisect_left函數是Python標準庫bisect模塊中的一個強大工具,接下來,我們將詳細探討bisect_left函數的使用場景,需要的朋友可以參考下
    2024-11-11
  • OpenCV實現對象跟蹤的方法

    OpenCV實現對象跟蹤的方法

    OpenCV 是一個很好的處理圖像和視頻的工具,本文主要介紹了OpenCV 進行對象跟蹤,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • python實現獲取Ip歸屬地等信息

    python實現獲取Ip歸屬地等信息

    本文給大家簡單介紹了下如何使用Python實現獲取IP歸屬地信息的方法和代碼,非常的實用,有需要的小伙伴可以參考下
    2016-08-08
  • python BlockingScheduler定時任務及其他方式的實現

    python BlockingScheduler定時任務及其他方式的實現

    這篇文章主要介紹了python BlockingScheduler定時任務及其他方式的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09

最新評論

溧水县| 平塘县| 红原县| 星子县| 康保县| 南澳县| 广汉市| 平谷区| 丁青县| 康定县| 横山县| 卢湾区| 曲阜市| SHOW| 东至县| 忻州市| 高碑店市| 伊宁县| 盖州市| 闽侯县| 屏南县| 兴安盟| 闸北区| 灵武市| 龙海市| 普格县| 荣昌县| 天门市| 安丘市| 方山县| 咸丰县| 泽普县| 图们市| 福安市| 两当县| 乌拉特后旗| 罗江县| 扶沟县| 元谋县| 潼关县| 泾源县|