只是一些思考的食物。
for循环在iterable上循环。创造你自己的一个可以让你自己前进的平台。
iterator = iter(range(11))
for i in iterator:
print 'for i = ', i
try:
print 'next()', iterator.next()
except StopIteration:
continue
>>> foo()
for i = 0
next() 1
for i = 2
next() 3
for i = 4
next() 5
for i = 6
next() 7
for i = 8
next() 9
for i = 10
next()
>>>
xrange()是range()的迭代版本
iterable=xrange(11)将充当迭代器。
这可以为您继续您的迭代器。
from itertools import dropwhile
iterator = iter(range(11))
for i in iterator:
if i == 3:
i = dropwhile(lambda x: x<8, iterator).next()
print 'i = ', i
>>> foo()
i = 0
i = 1
i = 2
i = 8
i = 9
i = 10
>>>
可以在循环外部调用DropWhile,以便通过迭代器创建迭代器。
然后您可以简单地对它调用next()。因为for循环和dropwhile都在同一个迭代器上调用next(),所以您可以控制它。
您还可以实现自己的迭代器,该迭代器使用send()允许您操作迭代器。