python生成器和迭代器关系
可迭代对象
首先介绍可迭代对象:列表、元祖、字典、字符串、集合、生成器
可以通过 isinstance判断一个对象是不是迭代器。
from collections import Iterable
list1 = [x for x in range(10)]
f = isinstance(list1,Iterable) # True
print(f)
f = isinstance('abc',Iterable) # True
print(f)
f = isinstance(10,Iterable) # False
print(f)
g = (x for x in range(10))
f = isinstance(g,Iterable) # True
print(f)
迭代对象
那什么是迭代器(Iterator):可以被next()函数调用并不断返回下一个值的对象就是迭代器 Iterable
迭代器特点:
1、迭代器对象从集合的第一个位置元素开始访问,直到访问结束
2、迭代器只能往前不能往后
注意:可迭代的不一定是迭代器
生成器是可迭代的,也是迭代器
g = (x for x in range(10))
print(next(g)) # 0
列表时可迭代的,但不是迭代器
扫描二维码关注公众号,回复:
11517924 查看本文章
list1 = [x for x in range(10)]
print(next(list1)) # TypeError: 'list' object is not an iterator
要想将列表变成迭代器,通过iter()函数转换
list1 = [x for x in range(10)]
list1 = iter(list1)
print(next(list1)) # 0
生成器与迭代器的区别
1、生成器就是为了节省内存,一个一个的拿到元素
2、能用next()函数调用的就是迭代器
3、生成器是迭代器,迭代器包含生成器
可关注微信公众号“软件测试分享库”了解更多pytest相关内容