1.迭代
迭代就是依次从数据结构中拿出东西的过程
流程控制中直接性的迭代就是for 循环
for 迭代变量 in 可迭代对象:
每次循环会自动让迭代变量指向‘下一个元素’
the_list = [ 'qwe' , '1234' , 1 , '哈哈哈' ]
for i in the_list:
print ( i)
i = 0
the_list = [ 'qwe' , '1234' , 1 , '哈哈哈' ]
while i < len ( the_list) :
v = the_list[ i]
print ( v)
i += 1
2.可迭代对象与迭代器的区别
"""
通过dir去查看对象属性信息
可迭代对象: 存在 __iter__, 没有__next__
迭代器对象: 存在 __iter__及__next__
"""
一类:list ,tuple ,dict ,set ,str
二类:generator(都是Iterator【迭代器对象】对象),包含生成器和带yield 的generatoe function(生成器函数)
3.iter与next
iter ( ) 函数用来生成迭代器。
"""
iter(object[, sentinel])
object -- 可迭代对象。
sentinel -- 默认参数,如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用 object。
"""
next ( ) 返回迭代器的下一个项目。
next ( ) 函数要和生成迭代器的 iter ( ) 函数一起使用。
"""
next(iterable[, default])
iterable -- 可迭代对象
default -- 可选--默认参数,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。
"""
the_list = [ 'qwe' , '1234' , 1 , '哈哈哈' ]
data_iter = iter ( the_list)
print ( type ( data_iter) )
print ( next ( data_iter) )
print ( next ( data_iter) )
print ( next ( data_iter) )
print ( next ( data_iter) )
4.迭代简单实现
it = iter ( [ 1 , 2 , 3 , 4 , 5 ] )
while True :
try :
x = next ( it)
print ( x)
except StopIteration:
break