Python3迭代器及其使用

版权声明:本文为博主原创文章,未经博主允许不得转载。不准各种形式的复制及盗图 https://blog.csdn.net/qq_26816591/article/details/88599609
# 生成器都是迭代器,迭代器不一定是生成器
# 字符串、列表、元组、字典、集合都可以被for循环,说明他们都是可迭代的
L = [1, 2, 3, 4, 5]

# L.__iter__() 尽量不用 底层内置函数
d = iter(L)
print(d)  # <list_iterator object at 0x000000000069A358>

# 什么是迭代器
# 满足两个条件 1 有iter方法 2 有next方法
print(next(d))  # 1

# for 循环内部做的三件事情
#     1 调用可迭代对象的iter方法返回一个迭代器对象
#     2 不断调用迭代器对象的next方法
#     3 处理stopIteration

from collections import Iterable

print(isinstance([1, 2, 3], list))  # 判断数据类型

L = [1, 2, 3, 4, 5]
d = iter(L)
print(d)
print(isinstance(L, list))  # 判断是不是 列表
print(isinstance(d, Iterable))  # 判断是不是迭代器 注意引用包

要点:

  •  生成器都是迭代器,迭代器不一定是生成器
  • 字符创,列表,元组,字典,集合都可以被for循环,说明他们都是可迭代对象
  • 若可以调用__iter__() 都是可迭代对象。但是一般使用iter() 函数
  • 满足迭代器的两个条件:1.有iter() 。2. 有next()
  • isinstance() 类型判断。isinstance(a,Iterable) 判断a 是否是可迭代对象。

猜你喜欢

转载自blog.csdn.net/qq_26816591/article/details/88599609