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

    for循环的数据类型:

    1.集合数据类型,如list列表,tuple元组,dict字典,set集合,str字符串等;

    2.generator生成器,包括生成器和带yield的generator function;

    如何判断一个对象是不是Interable?

    可用于for循环的对象,成为可迭代对象Iterable;第二种验证方法:isinstance函数

    >>> from collections import Iterable
    >>> isinstance([],Iterable)
    True
    >>> isinstance({},Iterable)
    True
    >>> isinstance((),Iterable)
    True
    >>> isinstance('abc',Iterable)
    True
    >>> isinstance((x for i in range(10)),Iterable)
    True
    >>> isinstance((lambda x:x**x),Iterable)
    False
    >>> isinstance(100,Iterable)
    False

    迭代器Iterator:可以被__next()__函数调用并不断返回下一值的对象成为迭代器。

    判断是否为迭代器,就看有没有__next__方法!

    >>> a = [1,2,3]

    >>> a.__next__()
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    AttributeError: 'list' object has no attribute '__next__'

    总结:可迭代对象Iterable一定是Iterator迭代器,但list、dict和str除外。它们虽然是可迭代对象Interable,但不是迭代器Interator。

    把list、dict和str由可迭代对象Iterable变成一个迭代器Iterator,使用iter()函数:

    >>> a = [1,2,3]
    >>> b = iter(a)
    >>> b.__next__()
    1
    >>> b.__next__()
    2

    原因:Iterator可以表示无限大的数据流或自然数,而list却不能。

  • 相关阅读:
    第三十章 货币增长与通货膨胀
    第二十九章 货币制度
    第二十八章 失业
    第二十七章 金融学的基本工具
    第二十六章 储需、投资和金融体系
    第二十五章 生产与增长
    第二十四章 生活费用的衡量
    第二十三章 一国收入的衡量
    第二十二章 微观经济学前沿
    Struts2 文件上传进度条的实现
  • 原文地址:https://www.cnblogs.com/wolfs685/p/6728183.html
Copyright © 2011-2022 走看看