迭代的概念
迭代就是执行重复的特定的任务,知道任务完成为止
相当于我们盖房子,今天添一块砖,明天加一块瓦,直到房子盖完为止。这里每天的工作就是一次迭代
(1.)可迭代对象
a.可以直接作用于for-in循环的数据类型都被称为可迭代对象:Iterable
b.可以使用isinstance()判断一个对象是否是可迭代对象
c.可以直接作用于for-in循环的数据类型
1>数据结构:list、set、tuple、dict、string
2>generator【生成器】【(),函数结合yield】
(2.)迭代器
a.迭代器:Iterator
b.不但可以作用于for-in循环,还可以使用next()函数将其中的元素获取出来,当获取完最后一个元素之后,当再次调用next方法,则会出现StopIteration错误,表示无法继续返回一个值
c.可以使用isinstance()判断一个对象是否是迭代器
结论:list、set、tuple、dict、string是可迭代对象,但是,不是迭代器,只有生成器才是迭代器
#导入模块
#collections:包【文件夹】
from collections import Iterable
print(isinstance([],Iterable))
print(isinstance((),Iterable))
print(isinstance({},Iterable))
print(isinstance((x for x in range(0,6)),Iterable))
print(isinstance("",Iterable))
print(isinstance(10,Iterable))
print(isinstance(True,Iterable))
print(isinstance(10.23,Iterable))
(3.)将可迭代对象转换为迭代器
迭代器一定是可迭代对象,但是,可迭代对象不一定是迭代器
iter():将可迭代对象转化为迭代器【主要针对list、set、tuple、dict、string】
from collections import Iterator
print(isinstance([],Iterator))
print(isinstance((),Iterator))
print(isinstance({},Iterator))
print(isinstance((x for x in range(0,6)),Iterator)) #生成器
print(isinstance("",Iterator))
ge = (x for x in [12,24,435,455,4])
for i in range(0,5):
print(next(ge))
#print(next(ge)) #StopIteration
list1 = [12,2,434,3]
#将列表转换为了迭代器
a = iter(list1)
print(next(a))
print(isinstance(iter([]),Iterator))
print(isinstance(iter(()),Iterator))
print(isinstance(iter({}),Iterator))
print(isinstance(iter(""),Iterator))
for x in [12,34,3545]:
print(x)
it = iter([12,34,3545])
while True:
try:
num = next(it)
except StopIteration:
break
(4.)总结
a.凡是可以使用for-in循环进行遍历元素的数据类型都是Iterable类型【可迭代对象】
b.凡是可以使用next()的数据类型都是Iterator类型
c.list、set、tuple、dict、string是Iterable类型,但是,可以通过iter()转换为