拿一片發電機
Itertoolsislice
允許你切割發電機:
results = fetch_paged_results() # returns a generator
limit = 20 # Only want the first 20 results
for data in itertools.islice(results, limit):
print(data)
通常你不能切割發電機:
def gen():
n = 0
while n < 20:
n += 1
yield n
for part in gen()[:3]:
print(part)
會給
Traceback (most recent call last):
File "gen.py", line 6, in <module>
for part in gen()[:3]:
TypeError: 'generator' object is not subscriptable
但是,這有效:
import itertools
def gen():
n = 0
while n < 20:
n += 1
yield n
for part in itertools.islice(gen(), 3):
print(part)
請注意,像常規切片一樣,你也可以使用 start
,stop
和 step
引數:
itertools.islice(iterable, 1, 30, 3)