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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python多线程详解(超详细)

    python多线程详解(超详细)python中的多线程是一个非常重要的知识点,今天为大家对多线程进行详细的说明,代码中的注释有多线程的知识点还有测试用的实例。importthreadingfromthreadingimportLock,Threadimporttime,os”’python多线程详解什么是线程?…

    2022年5月3日
    30
  • H.264 Profile、Level、Encoder三张简图

    H.264 Profile、Level、Encoder三张简图

    2021年8月30日
    48
  • IDEA 安装步骤「建议收藏」

    IDEA 安装步骤「建议收藏」1、下载与安装下载地址:https://www.jetbrains.com下载完成后安装选择安装的位置安装完成激活码:K03CHKJCFT-eyJsaWNlbnNlSWQiOiJLMDNDSEtKQ0ZUIiwibGljZW5zZWVOYW1lIjoibnNzIDEwMDEiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoi…

    2022年9月1日
    3
  • Thread.IsBackground 属性

    Thread.IsBackground 属性net提供了Thread类用于线程的操作。当初始化一个线程,把Thread.IsBackground=true的时候,指示该线程为后台线程。后台线程将会随着主线程的推出而退出。后台线程不妨碍程序的终止,只要所有前台线程都终止后,CLR就会对每一个活在的后台线程调用Abort()来彻底终止应用程序。【注意】当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALS…

    2022年8月31日
    0
  • 递归方法

    递归方法一、什么是递归递归是指函数直接或间接调用自身的一种编程方法。调用的过程就是“递”,返回的过程就是归。基本上,所有的递归问题都可以用递推公式来表示。二、递归满足的三个条件1.一个问题的解可以分

    2022年7月4日
    24
  • 每天一道算法_1_放苹果「建议收藏」

    Description把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。Input第一行是测试数据的数目t(0 Output对输入的每组数据M和N,用一行输出相应的K。Sample Input17 3Sample Output8 解析: 设f(m,n) 为m个

    2022年3月10日
    38

发表回复

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

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