python中 yield的使用(以乙個例子說明)

2021-08-28 10:34:23 字數 675 閱讀 9118

對於yield的理解參考文章:

①(譯)python關鍵字yield的解釋(stackoverflow):

②徹底理解python中的yield:

講的很多,有點複雜,如果不要求深入理解而只要知道它的用法,可以看例子:

注:這個例子可以用來實現滑動讀取序列資料,且每次讀取的重複率為50%

def windowz(data, size):

start = 0

while start < len(data):

yield start, start + size

start += (size // 2)

對上面的**中 ,假設此時呼叫傳入的引數為data為乙個陣列,len(data)=200,size=100。

則:迴圈次數

start

start+size10

1002

50150

3100

2004

150250

5200

300yield的作用相當於乙個生成器,每次將生成的值返回,並且每次生成的值對之後生成的值有影響(有點類似c語言中指標的值的修改)。

上面的例子中,呼叫windowz函式得到的結果是每次迴圈中得到的start和start+size二者的值。

python中的yield使用詳解

yield是python的乙個關鍵字,剛接觸python的時候對這個關鍵字一知半解,掌握之後才發現這關鍵字有大用,本文將對yield的使用方法好好梳理一番。在python中,生成器是一種可迭代物件,但可迭代物件不一定是生成器。例如,list就是乙個可迭代物件 a list range 3 for i...

python中的yield使用方法

今天在看其他同事的程式設計客棧 時,發現乙個沒使用過的python關鍵字 yield 先問了一下同事,聽他說了幾句,有個模糊的印象,僅僅是模糊而已。於是自己去搜搜資料看。看了半天,逐漸清晰了。不過在工作機制以及應用上還是有點迷茫。嗯,先把初始接觸的印象記下來吧。yield 簡單說來就是乙個生成器 g...

Python中yield表示式的使用

關於yield這個表示式,只是在以前用的時候網上搜了幾篇文章看了一下,大概理解如 何去使用,但yield執行原理其實還是不大明白,今天在次總結一下 1.如果乙個函式中使用了yield,那麼這個函式就變成了乙個生成器。生成器是可以迭代的,但只可以讀取它一次,因為用的時候才生成。2.生成器能夠迭代是因為...