記住乙個原則在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...