Python迭代器

为方便日后查询和学习,关于Python迭代器的内容将从可迭代对象、迭代器和从迭代器到序列三个方面总结1.可迭代对象a.Python中经常使用for…in…来对某个对象进行遍历,此时被遍

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

  为方便日后查询和学习,关于Python迭代器的内容将从可迭代对象、迭代器和从迭代器到序列三个方面总结

1. 可迭代对象

  a. Python中经常使用for…in…来对某个对象进行遍历,此时被遍历的对象就是迭代对象

  b. 容器(list/tuple/dict/set)、文件、容器都是可迭代对象

  c. 可迭代对象内部都定义了可以返回一个迭代器的__iter__方法或可以支持下标索引的__getitem__方法

2. 迭代器(iterator)

  任何实现了__iter__和__next__方法的独享都是迭代器,__iter__返回迭代器的自身,__next__返回容器中的下一个值

  当没有更多的元素,则抛出StopIteration异常

  例:

class fibs:
    numb = 100
    def __init__(self):
        print ("step 1")
        pass
    def __iter__(self):
        print ("step 2")
        return self
    def __next__(self):
        print ("step 3")
        fibs.numb = fibs.numb + 100
        return fibs.numb 
        
fib = fibs()
for i in fib:
    if i > 200:
        print (i)
        break

  输出:

  >>>> step 1
  >>>> step 2
  >>>> step 3
  >>>> step 3
  >>>> 300

3. 从迭代器到序列

  除了在迭代器和可爹带对象上进行迭代外,还能把它们转换为序列

class fibs:
    numb = 100
    def __init__(self):
        #print ("step 1")
        pass
    def __iter__(self):
        #print ("step 2")
        return self
    def __next__(self):
        #print ("step 3")
        fibs.numb = fibs.numb + 100
        if fibs.numb > 700:
            raise StopIteration
        return fibs.numb 
        
输出:
    >>>> fib = fibs()
    >>>> print (list(fib))
    >>>> [200,300,400,500,600,700]

 

  

 

  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120227.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PHP中对PSR-1、PSR-2规范理解

    PHP中对PSR-1、PSR-2规范理解

    2021年5月25日
    112
  • tpshop带微分销_TPshop分销商城的分销模式

    tpshop带微分销_TPshop分销商城的分销模式TPshop针对不同的应用场景提供了多款微商城模板,今天我们一起来看看TPshop分销系统支持哪些分销模式,如何促进分销渠道的扩展和分销商管理,是否支持三级分销?推客模式:是微商城系统提供的最基础的一种分销模式,即以粉丝为中心、以社交分享为主要推广裂变方式、以佣金结算为激励手段的分销。推客模式采取的是“无限级分销、三级分佣”的模式,也就是每一个推客都可以推荐发展下一级推客,佣金的计算从直接完成销售…

    2022年5月13日
    34
  • 如何查看XPS文件

    如何查看XPS文件xps文件相当于离线版网页,WPS不支持查看XPS文件,Office也不支持查看XPS文件今天就分享两种查看XPS文件的方法第一种方法就是使用Speedpdf在线文件转换网站将XPS文件免费转换成PDF文件或者Word文件,这个样子就可以查看XPS文件。第二种方法下载XPSViewer并且添加到计算机。如果电脑系统是Windows10只需搜索XPSViewer就可以使用,但是如果你已清除计算机的可选功能,就需要重新安装XPSViewer…

    2022年5月22日
    228
  • linux java卸载再安装

    linux java卸载再安装先卸载原有的rpm-qa|grepjava#找到已存在的,删掉:rpm-e-nodeps+文件名删掉yum-ylistjava*yum-yinstall#在找到上面需要到版本来安装

    2022年5月19日
    46
  • java 调用asmx[通俗易懂]

    java 调用asmx[通俗易懂]packagecom.webservice.test;importjava.util.Vector;importjavax.xml.namespace.QName;importjavax.xml.rpc.ParameterMode;importjavax.xml.rpc.encoding.XMLType;importorg.apache.axis.clien

    2022年6月9日
    40
  • [模板] Dijkstra单源最短路径

    [模板] Dijkstra单源最短路径十分基础的Dijkstra算法详见代码#definemaxn100000#definemaxm100000usingnamespacestd;constintINF=999999999;structHeapNode{ intd,u; booloperator<(constHeapNode&rhs)const { returnd>rh

    2022年5月30日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号