可迭代對(duì)象 Iterable
可直接作用于for循環(huán)的對(duì)象 坊秸,iterable⊙〖梗可以用isinstance()去判斷一個(gè)對(duì)象是否為iterable對(duì)象
可作用于for循環(huán)的數(shù)據(jù)類型有2種:
- 集合數(shù)據(jù)類型杭抠, 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()函數(shù)調(diào)用并不斷返回下一個(gè)值的對(duì)象 叫迭代器(Iterator 對(duì)象)
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))
# 轉(zhuǎn)成Iterator對(duì)象
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
小結(jié)
Iterable VS Iterator