python迭代 如何對迭代器做切片操作

2021-09-25 19:17:03 字數 829 閱讀 9413

問題舉例

讀取某個檔案內容的100~300行內容,我們是否可以使用

類似列表切片的方式得到乙個100~300行檔案內容的生成器

列表的切片操作其實是在過載方法__getitem__方法

可以通過file.readlines()後再做切片,記憶體會載入整個檔案到記憶體,如果檔案太大,會浪費記憶體空間

使用itertools.isslice,它能返回乙個迭代器物件切片的生成器

**

from itertools import

islice

f = open('

test.txt')

for line in islice(f, 100-1, 300):

print(line)

前面100行也要讀進來

自己實現乙個islice

from itertools import

islice

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...