问题 1.python中大量引用迭代,那迭代究竟什么意思? 2.循环和迭代有何区别?
解决: 1.迭代就是在可迭代对象中按一定的次序依次访问(例如 for 从左至右) 2.循环 有终止判断条件 迭代 也有终止条件,不过要依次迭代完所有
L = range(2)for i in L: print(i,end=' ') #加逗号,那是python2.7的用法使 结果输出:print在一行显示# python3 中使用内置参数end = ‘ ’
0 1
# 官方iter()解释 https://docs.python.org/3/library/functions.html?highlight=iter#ite# 产生一个iterator --------->默认有__next__()方法list_iter = iter(L)
list_iter.__next__()
0
list_iter.__next__()
1
list_iter.__next__() # 误 慌 -----此为警告StopIteration 对就是警告# 停止迭代
---------------------------------------------------------------------------StopIteration Traceback (most recent call last)in ()----> 1 list_iter.__next__() 2 # 误 慌 -----此为警告StopIteration 对就是警告 3 # 停止迭代StopIteration:
综上: 1.用inter()产生一个可迭代的对象 2.iterator默认有__next__方法 3.__next__相当于指针,每次调用完,指向下一个位置 4.直至指向末尾,弹出StopIteration的警告 5.要想指针从头开始,必须重新载入新的迭代对象
hello 文件1.Hello file world2.WELCOME TO MYWORLD
# 迭代的对象--文件最能凸显问题f = open('/home/odoo/Desktop/hello')
f.__next__()
'1.Hello file world\n'
# 这里注意哟 文件指针已经指向第二行了----陷阱# 要想指针从头开始,必须重新载入新的迭代对象for i in f: print(i)
2.WELCOME TO MYWORLD
感悟: 1.for循环其实内置__next__方法,只是python帮助我们提前完成了这项工作 2.最重要的一点还剔除了 警告StopIteration ---哈哈哈
# 列表解析式也能成为迭代器?[i for i in open('/home/odoo/Desktop/hello')]# 列表解析式 真美妙---太帅了
['1.Hello file world\n', '2.WELCOME TO MYWORLD\n', '\n', '\n']