1. 什么是可迭代对象、生成器、迭代器?
什么是可迭代对象?
在python中可迭代对象就是可以被for循环遍历的对象,常见的可迭代对象有字符串,列表,字典,set集合,元组
什么是生成器?
在编程中,我们有时候需要生成一个列表,但是该列表可能占据大量内存,此时列表直接加载到内存中就不可取,下面看一个简单的生成器
t = (i for i in range(10))
print(t)
print(next(t))
print(next(t))
print(next(t))
运行结果如下
<generator object <genexpr> at 0x0000024271136D58>
0
1
2
什么是迭代器?
简单的说就是能够被next调用,返回下一个值的对象
2. 三者的区别和联系
(1)、生成器就是迭代器
(2)、迭代器不一定是生成器
(3)、可迭代的对象不一定是迭代器
(4)、迭代器肯定可以被迭代
如何判断一个对象是可迭代的对象还是迭代器?
from collections import Iterable, Iterator
ls = [12, 45, 15, 78, 31]
# Iterable 判断对象是否可迭代的对象
print(isinstance(ls, Iterable))
# Iterator 判断对象是否是迭代器
print(isinstance(ls, Iterator))
# 将一个可迭代的对象转化成迭代器
lt = iter(ls)
print(isinstance(lt, Iterator))
运行结果如下
True
False
True