您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python在循环内任意增加迭代器

python在循环内任意增加迭代器

Python中有一个很棒的软件包,名为itertools

但是在开始之前,它很好地解释了如何在Python中实现迭代协议。如果要在容器上提供迭代,请指定__iter__()提供迭代器类型的类方法“了解Python的’for’语句”是一篇不错的文章,涵盖了该for-in语句在Python中的实际工作方式,并提供了有关迭代器类型如何工作的很好概述。

看一下以下内容

>>> sequence = [1, 2, 3, 4, 5]
>>> iterator = sequence.__iter__()
>>> iterator.next()
1
>>> iterator.next()
2
>>> for number in iterator:
    print number 
3
4
5

现在回到itertools。该软件包包含用于各种迭代目的的函数。如果您需要进行特殊测序,那么这是第一个研究的地方。

底部,您可以找到“食谱”部分,其中包含使用现有itertools作为构建块来创建扩展工具集的食谱

一个有趣的功能可以完全满足您的需求:

def consume(iterator, n):
    '''Advance the iterator n-steps ahead. If n is none, consume entirely.'''
    collections.deque(itertools.islice(iterator, n), maxlen=0)

这是一个简短易懂的示例,说明其工作方式 (Python 2.5)

>>> import itertools, collections
>>> def consume(iterator, n):
    collections.deque(itertools.islice(iterator, n))
>>> iterator = range(1, 16).__iter__()
>>> for number in iterator:
    if (number == 5):
        # Disregard 6, 7, 8, 9 (5 doesn't get printed just as well)
        consume(iterator, 4)
    else:
        print number

1
2
3
4
10
11
12
13
14
15
python 2022/1/1 18:42:12 有255人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶