python生成器和迭代器关系

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相关内容

猜你喜欢

转载自blog.csdn.net/weixin_44006041/article/details/107748935