問題舉例
讀取某個檔案內容的100~300行內容,我們是否可以使用
類似列表切片的方式得到乙個100~300行檔案內容的生成器
列表的切片操作其實是在過載方法__getitem__方法
可以通過file.readlines()後再做切片,記憶體會載入整個檔案到記憶體,如果檔案太大,會浪費記憶體空間
使用itertools.isslice,它能返回乙個迭代器物件切片的生成器
**
from itertools importislice
f = open('
test.txt')
for line in islice(f, 100-1, 300):
print(line)
前面100行也要讀進來
自己實現乙個islice
from itertools importislice
def my_islice(iterable, start, end, step=1):
tmp =0
for i, x in
enumerate(iterable):
if i >=end:
break
if i >=start:
if tmp ==0:
tmp =step
yield
x tmp -= 1
print(list(my_islice(range(100, 150), 10, 20, 3)))
print(list(islice(range(100, 150), 10, 20, 3)))
python迭代 如何對迭代器做切片操作
問題舉例 讀取某個檔案內容的100 300行內容,我們是否可以使用 類似列表切片的方式得到乙個100 300行檔案內容的生成器 列表的切片操作其實是在過載方法 getitem 方法 可以通過file.readlines 後再做切片,記憶體會載入整個檔案到記憶體,如果檔案太大,會浪費記憶體空間 使用i...
Python 如何實現可迭代物件和迭代器物件
一 通過可迭代物件和python內建函式iter 得到迭代器 即,iter 可迭代物件 得到乙個迭代器 例 list 1 1,2,3,4,5 1 iter 物件 若此物件想滿足迭代要求,其內部要有迭代介面或者乙個序列 iter 或者 getitm 2 迭代器只有乙個介面 next 呼叫next 時會...
python 迭代器 python迭代器
迭代器 可以直接作用for迴圈的資料型別 我們已經知道,可以直接作用for迴圈的資料型別有以下幾種 一類是集合資料型別 如 list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function 可迭代物件定義 這些可以直接作用fo...