Day_09_PM_Iterators_And_Iteratable_Objects
from collections.abc import Iterable
from collections.abc import Iterator
# 可迭代对象
# 可以使用for-in遍历的就是可迭代对象
# 有: list, tuple,dict,set,str
# type() : 获取数据类型
print(type(10)) # <class 'int'>
# isinstance(): 实例, 判断某个对象是否属于某个(或多个)类
print(isinstance(10, int)) # True
print(isinstance('abc', (int, float, str))) # True
print(isinstance([], Iterable)) # True
print(isinstance((), Iterable)) # True
print(isinstance({}, Iterable)) # True
print(isinstance({1}, Iterable)) # True
print(isinstance('abc', Iterable)) # True
print(isinstance((i for i in range(2)), Iterable)) # True
print(isinstance(10, Iterable)) # False
print()
# 迭代器; 既可以使用for-in循环, 也可以使用next()调用
print(isinstance([], Iterator)) # False
print(isinstance((), Iterator)) # False
print(isinstance({}, Iterator)) # False
print(isinstance({1}, Iterator)) # False
print(isinstance('abc', Iterator)) # False
print(isinstance((i for i in range(2)), Iterator)) # True
print(isinstance(10, Iterator)) # False
# Python: 一切皆为对象
# iter() : 将可迭代对象 => 迭代器
# list() : 迭代器 => 可迭代对象(列表)
l = [1,2,3]
t = iter(l)
# print(list(t)) # [1, 2, 3]
# 可以使用for-in循环
for i in t:
print(i)
# 也可以使用next调用
# print(next(t)) # 1
# print(next(t)) # 2
# print(next(t)) # 3