可迭代对象 Iterable
可直接作用于for循环的对象 ,iterable。可以用isinstance()去判断一个对象是否为iterable对象
可作用于for循环的数据类型有2种:
- 集合数据类型, list tuple dict set string
- generator,包括生成器和带yield的generator function
from collections.abc import Iterable
print(isinstance([], Iterable))
print(isinstance((), Iterable))
print(isinstance('abcs', Iterable))
print(isinstance({'a': 1}, Iterable))
print(isinstance(1, Iterable))
print(isinstance((x for x in range(10)), Iterable))
迭代器 Iterator
可以被next()函数调用并不断返回下一个值的对象 叫迭代器(Iterator 对象)
from collections.abc import Iterator
print(isinstance('abc', Iterator)) # false
print(isinstance([], Iterator)) # false
print(isinstance({}, Iterator)) # false
print(isinstance((), Iterator)) # false
print(isinstance((x for x in range(10)), Iterator)) # True
l = (x for x in range(10))
print(next(l))
print(next(l))
# 转成Iterator对象
a = iter([1, 2, 3, 4, 5])
print(next(a))
print(next(a))
print('-' * 50)
print(isinstance(iter([]), Iterator)) # True
print(isinstance(iter(()), Iterator)) # True
print(isinstance(iter(''), Iterator)) # True
print(isinstance(iter({}), Iterator)) # True
网友评论