zoukankan      html  css  js  c++  java
  • 迭代器

    概念

    我们已经知道,可以直接作用于for 循环的数据类型有一下几种:
    1、一类是集合数据类型,如list、tuple、dict、set、str等;
    2、一类是generator(生成器),包括生成器和带yield的generator funcation;
    (带yield的函数生成器和列表生成器)
     
    这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。
    可以使用isinstance()判断一个对象是否是Iterable对象:
     
     

    创建迭代器对象的方法

    一、iter()函数获得一个Iterator对象。
    list、tuple、dict、set、str等数据类型可以用iter()函数转换成迭代器
    例如:
     1 1、正常循环一个序列:
     2 for i in [1,2,3,4,5,6,7,8,9]
     3    pass
     4     .....
     5 
     6 2、用迭代器循环一个序列:
     7 #首先获得Iterator对象:
     8 it = iter([1,2,3,4,5])
     9 
    10 #循环对象:
    11 while True:
    12     try:
    13         #获得下一个值:
    14         x = next(it)
    15     except  StopIteration:
    16         #遇到StopIteration就退出循环:
    17         break
    18 
    19 
    20 #注意:上下两个完全等价
    列表循环
    二、跌倒器就是可以迭代的对象。
     1 def myrange(arg):
     2     start = 0
     3     while True:
     4         if start > arg:
     5             return
     6         yield  start
     7         start += 1
     8 ret = myrange(3)
     9 r = ret.__next__()  #进入函数,找到yield,获取yield后面的数据,每运行一次,生成器就会往下执行一个数值:
    10 print(r)
    11 r = ret.__next__()
    12 print(r)
    13 r = ret.__next__()
    14 print(r)
    15 r = ret.__next__()
    16 print(r)
    迭代器实例
    三、用途:
    socket的时候会用到,但是代码复杂性增加
    迭代器就类似于概念性的一个知识点
    迭代器就是由__next__可以一个一个提取的,类似于for循环的,逐步取值的,就叫做迭代器。
    例如
    1、一个列表,然后用for进行遍币,其实就是执行了r = ret.__next__();
    2、当迭代到最后一个值时,按理说取完后会报错的,但是由于封装到foread
     
     
     
     
     
  • 相关阅读:
    Python 解决: from pip import main ImportError: cannot import name 'main'
    tensorflow学习笔记
    python多线程、多进程相关知识
    灰度发布相关
    自定义flume的hbase sink 的序列化程序
    pyspark数据准备
    利用pipeline批量插入数据到redis
    CentOS Linux系统下更改Apache默认网站目录
    更改nginx网站根目录
    chkconfig用法
  • 原文地址:https://www.cnblogs.com/abobo/p/8110369.html
Copyright © 2011-2022 走看看