
*****
## 迭代器
在介紹迭代器之前,先說明下迭代的概念:
迭代:通過for循環遍歷對象的每一個元素的過程。
Python的for語法功能非常強大,可以遍歷任何可迭代的對象。
在Python中,list/tuple/string/dict/set/bytes都是可以迭代的數據類型。
#### 迭代器是什么?
迭代器是一種可以被遍歷的對象,并且能作用于next()函數。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。 迭代器只能往后遍歷不能回溯,不像列表,你隨時可以取后面的數據,也可以返回頭取前面的數據。
### 生成器
有時候,序列或集合內的元素的個數非常巨大,如果全制造出來并放入內存,對計算機的壓力是非常大的
### 生成器如何讀取大文件
文件300G,文件比較特殊,一行 分隔符 {|}
~~~
def readlines(f,newline):
buf = ""
while True:
while newline in buf:
pos = buf.index(newline)
yield buf[:pos]
buf = buf[pos + len(newline):]
chunk = f.read(4096*10)
if not chunk:
yield buf
break
buf += chunk
with open('demo.txt') as f:
for line in readlines(f,"{|}"):
print(line)
~~~