參考**:
1,yield就好比是生成迭代器的關鍵字,迭代器在需要的時候才會去拿資料,所以,第二段**會報錯,對於第一段**:list本身就是全部放到記憶體中的。
the_list = [2**x for x in range(5)]
print(type(the_list))
print(len(the_list))
the_genarator = (x+x for x in range(3))
print(the_genarator)
print(len(the_genarator)) # 這裡會報錯
2,實現 需要資料的時候再去讀取,不需要的時候就不去讀取資料。
def search(keyword,filename):
print("generator started")
f = open(filename,'r')
for line in f:
if keyword in line:
yield line
f.close()
the_genarator = search('search','c:/tmp.txt')
print(type(the_genarator))
print(type(search))
print(next(the_genarator)) # 這行**可以多執行幾次,直到tmp.txt中找到的search全部執行完
3,例項三:
def hold_client(name):
yield 'hello, %s! you will be connected soon' % name
yield 'dear %s, could you please wait a bit.' % name
yield 'sorry %s, we will play a nice music for you!' % name
yield '%s, your call is extremely important to us!' % name
tmp = hold_client("xiaoming")
print(next(tmp)) # 這裡可以把hold_client 中所有yeild的字元 ,全部列印
print(next(tmp))
print(next(tmp))
print(next(tmp))
4,例項四:
# 通過yield實現的斐波拉切數列
def fibonacci(n):
curr = 1
prev = 0
counter = 0
while counter < n:
yield curr
prev, curr = curr, prev + curr
counter += 1
# in:
fi = fibonacci(5)
print(next(fi))
print(next(fi))
print(next(fi))
print(next(fi))
5,例項五:
# yeild 的關鍵字來讀取大檔案
# 兩種形式來實現:第一種是普通的read來實現,另外一種是pandas來實現
def read_in_chunks(file,chunk_size = 1024):
# 懶惰生成器,預設大小是1k
while true:
data = file.read(chunk_size)
if not data:
break
yield data
f=open('filepath')
da = read_in_chunks('filepath')
next(da)
#對於大檔案讀取的方式是一樣的。
# 通過yeild關鍵字來分段的讀取資料
def read_in_chunks(filepath,chunksize = 102400):
f = open(filepath,'r')
while true:
# 這種讀檔案的方法是,讀了chunksize大小的檔案後,指標下移到末尾
data = f.read(chunksize)
if not data:
break
yield data
sreader = read_in_chunks('e:/tmp/tmp.csv')
6,擴充套件:對於大檔案,可以使用mmap來操作。
這只是乙個簡單的例子,詳細的繼續學習。
import mmap
with open('e:/tmp/tmp.csv','r+') as f:
map = mmap.mmap(f.fileno(),0)
print(map.readline())
map.seek(0)
print(map.readline())
map.close()
Android gridview 使用的一些小問題
1.gridview 水平滑動,網上有很多的介紹,比如 其中我認為對gridview 的 android layout width的設定是比較關鍵的 我是把它設定為乙個定值 例如1000dp 才能夠正常顯示的,其他情況下顯示不出來。2.對於gridview 某一項 子view 的獲取,使用getch...
NSDictionary的一些使用
1.這裡只有這兩個 如果乙個鍵 值對存在 setobject 這個方法就是 修改 如果乙個鍵 值對不存在 這個方法就是 增加。下面看個例子 判斷鍵值對存在與否是看鍵或者 值有乙個相同就是存在。1 nsstring last lastname 2 nsstring first firstname 3 ...
UItableveiw的一些使用
uitableview是ios用來展示資料的一種重要控制項,幾乎所有的資料展示頁面都可以用uitableview來做 uitableview使用首先要定義宣告,可用 定義也可用storybord直接拖,要設定 和資料來源 模式是ios開發中的重要模式,很好的使用 可以讓 寫起來更省力,有些 的使用也...