Python不归路_迭代器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python不归路_迭代器相关的知识,希望对你有一定的参考价值。

迭代器:

  for循环可以对两类数据类型进行迭代:

  1.比如list、tuple、dict、set等

  2.带有yield关键字的函数或者能用__next__()进行调用的,也就是生成器

  能被for调用的对象都是Iterable的,可以使用isinstance方法验证是不是Iterable  

from collections import Iterable
a=[1,b,c]
b={name:gally,age:23}
isinstance(a,Iterable)
isinstance(b,Iterable)
输出结果:
True
True

 那么既然list、tuple、dict、set等都是Iterable,那是不是Iterator呢?我们仍然可以使用isinstance来判断。

 

from collections import Iterator
isinstance(a,Iterator)
isinstance(b,Iterator)
输出结果:
False
False

 很明显list、set、tuple、dict都不是迭代器,但是它们是可以迭代的。那能否把它们也变成迭代器呢?

from collections import Iterator
a=[1,b,c]
isinstance(iter(a),Iterator)
输出结果:
True
  

小结:List、Set、tuple、dict等是Iterable,但不是Iterator,使用Iter()方法可以使可迭代对象变成迭代器。

接下来我们来看生成器是否Iterable和Iterator,同样我们还是用isinstance来验证。

from collections import Iterator
def
func1(x): while x < 1000: n = x**2 yield n x+=1 f=func1(200)
isinstance(f,Iterator)#判断是否是迭代器
输出结果:
True
from collections import Iterable
isinstance(f,Iterable)
输出结果:
True

小结:生成器既是Iterable,又是Iterator。

总结:能用for循环的都是Iterable类型。

   list、dict、set、tuple等都是Iterable但不是Iterator,可以通过Iter()函数使其变为Iterator。

   生成器都是迭代器。

   

















以上是关于Python不归路_迭代器的主要内容,如果未能解决你的问题,请参考以下文章

Python不归路_装饰器

Python不归路_生成器

Python不归路_字符编码操作

Python不归路_文件操作

Python---迭代器,生成器,列表推导式

Python不归路_configparser模块