记住:迭代器一定是可迭代对象,但可迭代对象不一定是迭代器。
迭代器特征:遍历一遍就耗尽,自带__next__
目录
一)目前接触的迭代器:
1:调用zip()函数,执行后,返回值是可迭代对象,属于迭代器类型。
2:调用reversed()函数,执行后,返回值是可迭代对象,属于迭代器类型。
3:接触元组时,了解到的一个生成器表达式,返回可迭代对象,属于迭代器类型,该类型为
生成器。
4:调用iter()函数,执行后,返回值是可迭代对象,属于迭代器类型。
二)目前接触的迭代器对象:
1:调用range()函数,执行后,返回值是可迭代对象。
2:list列表本身就是可迭代对象。
3:tuple元组本身就是可迭代对象。
4:str字符串本身也是可迭代对象。
一)目前接触的迭代器:
1:调用zip()函数,执行后,返回值是可迭代对象,属于迭代器类型。
初步接触这个zip()函数,是将多个列表组合成元组的迭代器,
# zip()函数用法,将多个列表组合成元组,可迭代对象,遍历一次就耗尽,并返回这个zip对象。
# 如果各个迭代器的元素不一样,则返回列表长度与最短的对象相同;
e = [4,6,7,8]
f = [2,8,5,0]
g = [3,2,3,2,9]
h = zip(e,f,g)
print(type(h),h)
2:调用reversed()函数,执行后,返回值是可迭代对象,属于迭代器类型。
初步接触这个函数,是对列表数据进行排列,返回可迭代对象,属于列表反转迭代器
g = [3,2,3,2,9]
i = reversed(g)
print(type(g),g)
print(type(i),i,list(i))
3:接触元组时,了解到的一个生成器表达式,返回可迭代对象,属于迭代器类型,该类型为<class 'generator'>生成器。
# 列表推导式,生成列表对象。
a = [x*10 for x in range(10)]
b = (y for y in range(5))
print(type(a),a)
# 生成器推导式生成的不是列表,也不是元组,而是一个生成器对象。
print(type(b),b)
4:调用iter()函数,执行后,返回值是可迭代对象,属于迭代器类型。
接触这个是AI塞给我的,顺便了解下,
r = range(5)
it = iter(r) # range本身不是迭代器,iter之后才变成迭代器
二)目前接触的迭代器对象:
1:调用range()函数,执行后,返回值是可迭代对象。
2:list列表本身就是可迭代对象。
3:tuple元组本身就是可迭代对象。
4:str字符串本身也是可迭代对象。
它们可以反复遍历,不会读一次就清空;想要迭代器,套一层 iter()。
注意:由于现在学习有限,还未了解全面,其实拓展下去,还有迭代器与迭代对象的关系,这个后面接触到,了解更多,再详写。



