标签:Python
在python开发中,我们常常都会用到迭代器,所以对于python初学者来说,必须掌握迭代器相关知识。本文小编就将为大家分享有关迭代器的相关知识,觉得有必要了解或加深了解的童鞋,请往下看。
1.迭代器介绍
可迭代对象:列表、元组、字符串
迭代工具:for循环、列表解析、in成员关系测试、map内建函数
下面,通过具体的例子,给大家展示一下:
1. >>> for item in (1,3,4,5):
2. print(item)
3.
4. 1
5. 3
6. 4
7. 5
8. >>> for alpha in ’abcde’:
9. print(alpha)
10.
11. a
12. b
13. c
14. d
15. e
16. >>> for item in [1,2,3,4]:
17. print(item)
18.
19.
20. 1
21. 2
22. 3
23. 4
24. >>>
上面的例子都是使用for循环结合in成员关系测试来迭代列表、元组与字符串。
2.文件迭代器
说到文件迭代,我们常常将for与readline结合起来使用,比如:
1. >>> handler=open(’output_file.txt’)
2. >>> handler.readline()
3. ’abcd\n’
4. >>> handler.readline()
5. ’efgh\n’
6. >>> handler.readline()
7. ’ijklstrstr\n’
8. >>> handler.readline()
9. ’nn’
10. >>> handler.readline()
11. ’’
12. >>> handler=open(’output_file.txt’)
13. >>> for line in handler.readlines():
14. print(line)
15.
16. abcd
17.
18. efgh
19.
20. ijklstrstr
21.
22. nn
23. >>>
在上面的这个例子中,需要注意的一点就是,第一个程序一直调用handler.readline(),如果到了末尾,一直返回空的话,使用for加上handler.readlines(),如果到达底部,则直接停止。
在文件里面,其实还有有一个内建函数next可以达到上面的类似效果:
1. >>> handler=open(’output_file.txt’)
2. >>> handler.__next__ ()
3. ’abcd\n’
4. >>> handler.__next__ ()
5. ’efgh\n’
6. >>> handler.__next__ ()
7. ’ijklstrstr\n’
8. >>> handler.__next__ ()
9. ’nn’
10. >>> handler.__next__ ()
11. Traceback (most recent call last):
12. File "<pyshell#35>", line 1, in <module>
13. handler.__next__ ()
14. StopIteration
15. >>> handler.close ()
16. >>>
但是使用next函数实现这个效果的时候,需要注意的是,到达底部,会自动报错。next()是通过捕捉StopIteration来确定是否离开。
最后,我们来看看文件迭代性能问题:
1.当文件过大的时候怎么读取(超过100M)
这种情况下就不能使用handler.readlines()方法了,因为handler.readlines()是一次性把整个文件加载到内存里面去的。
在这种情况下,一般是一行行的来读取,可参考下面两种方法实现:
1. >>> for line in handler:
2. print(line,end=’’)
3. abcd
4. efgh
5. ijklstrstr
6. nn
7. >>>
8.
9.
10.
11.
12. >>> handler=open(’output_file.txt’)
13. >>> while True:
14. line=handler.readline()
15. if not line:
16. break
17. print(line,end=’’)
18. abcd
19. efgh
20. ijklstrstr
21. nn
22. >>> handler.close ()
23. >>>
在上面这两种方法中,建议使用第一种for…in…方法,因为这种方法相比而言更快捷、简洁。
以上就是python迭代器和文件迭代相关知识的介绍,希望对初学者学习相关知识有所帮助。如需了解更多python相关干货,大家可直接进入麦子学院企业直通班学习。
标签:Python