栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 345

现在回到

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 number1234101112131415


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641299.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号