yield生成器 提公升速度

2021-08-29 17:22:37 字數 797 閱讀 2322

記住乙個原則在python中能簡單就做到最簡單。

這是修改後的**:

sample= eval(open(config.trainsample).read())
這是修改前的具有相同含義的**:

f=open(config.trainsample,'r').readlines()

s=f[0]

count=0

li=re.findall(r'\[(?p.*?)]',s,re.dotall)

for x in li:

t=for y in x.split(','):

先別理這個實現的功能是什麼但是通過這樣兩端**就可以發現python的優勢(如果你發現的話)。

更重要的一點是前一段**所用的實現功能是python2.0被加入的列表解析、這樣已經比後一段**提高了不少的效率。

生成器表示式是列表解析的乙個擴充套件,這是python2.4時加入的,與列表解析器非常相似而且它們的基本語法相同。

主要是乙個記憶體使用更友好的結構。

我們可以這樣寫

[x for x in obj if something]  #列表返回

或者(x for x in obj if something) #generator返回

說白了就是乙個是【】號,乙個是()號。但是在實現是卻有很大的不同。

從這裡可以看出,它不像列表一樣,當遇到很大的資料時必須建立乙個很大的列表來存放東東,而生成器表示式就好像是乙個懶惰的列表解析。

速度是大大的提高,大家可以用用試試!!

生成器 PHP的生成器yield 原創

在php 5.5中,php多了乙個新的特性,那就是生成器 generator 生成器提供了一種更簡單的方法來實現簡單的物件迭代。下面的manual的引用 生成器提供了一種更容易的方法來實現簡單的物件迭代,相比較定義類實現 iterator 介面的方式,效能開銷和複雜性大大降低。生成器允許你在 for...

generator生成器與yield

普通函式 一路執行到底 generator函式 可以暫停執行 yield是什麼 yield是es6的新關鍵字,使生成器函式執行暫停,yield關鍵字後面的表示式的值返回給生成器的呼叫者。它可以被認為是乙個基於生成器的版本的return關鍵字。yield關鍵字實際返回乙個iteratorresult ...

Python之生成器(yield)

這裡是一段防爬蟲文字,請讀者忽略。本文原創首發於csdn,作者idys 部落格首頁 生成器函式 迭代器一定是可迭代物件,可迭代物件不一定是迭代器 def inc for i in range 5 yield i print type inc print type inc x inc print ty...