二十一、迭代器

首先,先看一个方法:dir(数据类型)这个方法可以查看指定数据类型下所有的方法,比如dir([])就表示返回列表的所有方法。
当用上述方法查看某个数据类型拥有的方法时,会发现有很多的带双下划线的方法,我们把这些方法叫作双下方法,一般这类方法不直接调用。

判断一个数据类型是否是可迭代的

1、首先,用dir(数据类型)方法查看该类型有没有__iter__()方法,如果有,就是可迭代的,如果没有,就不是,也就是说该方法类似于可迭代协议;而如果某个数据类型同时含有__next__()__iter__()两个方法,则其就是迭代器。
2、除此之外,也可以用isinstance()方法进行判断,具体如下:

  1. 判断一个数据类型是否为可迭代的isintance(数据类型,Iterable)
  2. 判断一个数据是否是迭代器isintance(数据类型,Iterator)
    实例: 判断列表是否为可迭代的和迭代器(运行版本为python3.7)
    from collections import Iterable
    from collections import Iterator
    print(isinstance([],Iterator))
    print(isinstance([],Iterable))
迭代器的好处

1、从容器类型中一个一个的取值,会把所有的值都取到
2、节省内存空间

  1. 迭代器并不会在内存中再占用一大块内存,而是每次调用next方法,生成相应数据,并不会直接生成所有的数据,而是每次生成一个;
  2. 每次调用__next__()方法生成一个
迭代器的生成

迭代器的生成非常简单,对于有__iter__()的方法,直接调用此方法就可以返回一个迭代器,然后就可以使用了。
基本语法: 可迭代变量名.__inter__()
实例:

lis = [1,2,3,4,54,5]
ret = lis.__iter__() #返回一个迭代器给ret
ret.__next__() #通过__next__()方法取值,第二次调用就取第二个值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值