python--迭代器(Iterator)

  博客地址:http://www.cnblogs.com/yudanqu/函数

一、可迭代对象 

  • 在介绍迭代器以前呢,咱们先聊一下可迭代对象(Iterable),可迭代对象就是能够直接做用于for循环的对象。
  • 那么什么是能够直接用于for循环的呢?
  • 能够直接用于for的数据类型通常分为两种:

    一、集合数据类型,如list、tuple、dict、set、string……学习

    二、generator,包括生成器和带yield的generator functionspa

  • 那么咱们如何判断一个对象是不是可迭代对象呢?答:isinstance()

  ************************************************************************************************************************************3d

  描述:isinstance() 函数来判断一个对象是不是一个已知的类型code

  语法:isinstance(object, classinfo)对象

  参数:(1)object -- 实例对象blog

        (2)classinfo -- 能够是直接或间接类名、基本类型或者由它们组成的元组字符串

  返回值:若是对象类型与classinfo的类型相同则返回True,不然返回Falseget

  ************************************************************************************************************************************
input

  那么我下面给你们看个小栗子:

        

  在这里面,首先我导入的Iterable的包,也就是可迭代对象,下面的四条语句是分别查看列表、元组、字典、字符串的类型,能够看到他们四个都是可迭代对象,固然,可迭代对象远不止这些,这里只是给你们一个概念,而且看一下isinstance的使用方法。若是你还不能理解的话,能够想一下,你有没有写过这样一句话(for i in [1,2,3,4,5]),这是一个循环的表示方法,这里面就是在循环列表中的元素,来实现内部语句块。也能够说成是遍历这个列表,固然也就是迭代了。

二、迭代器

  迭代器就是不但能够做用于for循环,还能够被next()不断的调用并返回下一个值,知道最后抛出一个错误StopIteration错误,表示没法继续返回下一个值。

 对比:
  
  能够被next()函数调用并不断返回下一个值得对象称为迭代器 (Iterator)   能够直接做用于for循环的对象统称为可迭代对象(Iterable)

   下面又是一个小栗子:

  

  里面的isinstance依然是判断类型,咱们能够看到,(x for x in range(5))是一个迭代器,咱们能够把这个迭代器用一个属性来接收,这样方便咱们调用。注意上面提到的,迭代器是能够被next()调用的,因此咱们next(L)来迭代输出里面的值。

  

  如今的这些返回值为False,你们应该了解他的缘由了吧,[](){}"" 等等这些都只是可迭代对象,而不是迭代器。(注意那两个单词是不同的)

  除此以外还须要说明的一点是,其余的数据类型也能够转为迭代器:

# 例如:列表转迭代器:
a = iter([1,2,3,4])
print(next(a))

  元组,字符串,字典均可以这样。

 *下面用一个小案例让你们看下他的用法

endstr = 'end'
str = ""

for line in iter(input,endstr):
    str += line + '\n'

print(str)
#目的就是为了使input不直接退出,能够换行继续输入;并且在打印str时也能够分行同时打印

  看一下效果:

  

  迭代器大概就先介绍到这里,欢迎你们和我来一块儿学习。

 

  做者:渔单渠(yudanqu)

  博客地址:http://www.cnblogs.com/yudanqu/

相关文章
相关标签/搜索