iterable & iterator
- 可迭代(Iterable):可迭代对象可以直接作用于for循环
- 迭代器(Iterator):不但可以作用于for循环,还可以被next调用
- list是典型的可迭代对象,但不是迭代器
- 通过isinstance判断是否是可迭代对象或迭代器
# isinstance案例
# 判断某个变量是否是一个Iterable、Iterator实例
# 判断是否是可迭代的
from collections import Iterable
ll = [1,2,3,4,5]
print(isinstance(ll,Iterable))
# 判断是否是迭代器
from collections import Iterator
print(isinstance(ll,Iterator))
- Iterable和Iterator可以转换
- 通过iter函数
generator
- generator:一边循环一边计算下一个元素的机制/算法
- 需要满足三个条件:
- 每次调用都生产出for循环需要的下一个元素或者
- 如果达到最后一个元素,抛出StopIteration异常
- 可以被next函数调用
- 如何生成一个生成器
- 直接使用
g = (x*x for x in range(5)) # 放在小括号里是生成器
- 如果函数中包含yield,则这个函数就是一个生成器,此时不可以将生成器通过函数调用的方式使用。
- 注:在使用生成器的时候, 先产生一个生成器,再使用 next。防止出现每次都生成的一个新的生成器的情况。
- next调用函数,遇到yield返回
- 在for循环中使用生成器的典型用法
# 通常的方法,fib是一个之前定义好的生成器
ge = fib(10)
'''
生成器的典型用法是在for循环中使用
比较常用的典型生成器就是range
'''
for i in ge: # 在for循环中使用生成器
print(i)
注:本文是本人根据北京图灵学院的python课程自己整理的笔记哒,转载请注明出处哈~