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

如果range()是Python 3.3中的生成器,为什么不能在范围上调用next()?

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

如果range()是Python 3.3中的生成器,为什么不能在范围上调用next()?

range
是一类不变的可迭代对象。可以将它们的迭代行为与
list
s进行比较:您不能
next
直接调用它们;您必须使用来获得迭代器
iter

所以不,

range
不是发电机。

您可能会想,“他们为什么不直接迭代呢?”?好吧,

range
s具有一些有用的属性,而这是不可能的:

  • 它们是不可变的,因此可以用作字典键。
  • 他们有
    start
    stop
    step
    属性(因为Python 3.3),
    count
    index
    方法,它们支持
    in
    len
    __getitem__
    操作。
  • 您可以
    range
    多次迭代相同的对象。

>>> myrange = range(1, 21, 2)>>> myrange.start1>>> myrange.step2>>> myrange.index(17)8>>> myrange.index(18)Traceback (most recent call last):  File "<stdin>", line 1, in <module>ValueError: 18 is not in range>>> it = iter(myrange)>>> it<range_iterator object at 0x7f504a9be960>>>> next(it)1>>> next(it)3>>> next(it)5


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

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

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