python-迭代器

#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
'''
Iterator:可以被next()函数调用,并不断返回下一个值的对象叫做迭代器
    特性:1-迭代器的长度是未知的
         2-迭代器是惰性计算的(和生成器差不多),只有需要返回下一个数据时才会计算
         3-基于惰性计算的特性,Itertor中数据流可以是无限大的
Iterable:指可以直接作用于for循环的对象叫做可迭代对象


'''
# ----------Iterable----------
from collections import Iterable
# isinstance(self,Iterable)方法:查看一个元素是否是可迭代对象
print(isinstance([],Iterable))
print(isinstance('abc',Iterable))
print(isinstance({},Iterable))
print(isinstance(100,Iterable))

# ----------Iterator----------
from collections import  Iterator
# isinstance(self,Iterator)方法:查看一个元素是否是迭代器
print(isinstance((x for x in range(1,10)),Iterator))    # 生成器本身就是迭代器,反之不一定
print(isinstance([1,2,3,4],Iterator))
print(isinstance({'a':1,'b':2},Iterator))

# ----------Iter----------
# list, string, dict等虽然是可迭代对象(Iterable),但却不是迭代器(Iterator)
# 但可以使用Iter函数将Iterable变成Iterator
print(isinstance(iter([1,2,3,4]),Iterator))

# ----------迭代器的遍历----------
for x  in range(1,5):
    print(x)
# 等价于:
it = iter([1,2,3,4])    # 获得一个迭代器
while True:
    try:
        print(next(it))
    except StopIteration:
        break

  

posted @ 2018-05-16 16:44  Octopuslnlzy  阅读(141)  评论(0编辑  收藏  举报