举例讲解如何在Python编程中进行迭代和遍历


Posted in Python onJanuary 19, 2016

迭代
首先理解下什么是迭代,python中所有从左往右扫面对象的方式都是可迭代的

有哪些方式是可迭代的:

1.文件操作

   我们读取文件的时候,会用到一个readline()方法,其实它就是一个迭代器,它会返回当前的数据,然后自动的调用内置的next()方法来让文件的读取头自动的移动到当前的下面一行,准备下次的读取,到达文件末尾时,就会返回空字符串.

>>> f=open('hello.py')
>>> f.readline()
'#!/usr/bin/python2.5\n'
>>> f.readline()
'print "hello.word!"\n'
>>> f.readline()
'\n'
>>> f.readline()
''
 
>>> for i in open('hello.py'):
...       print(i)
... 
#!/usr/bin/python2.5
print "hello.word!"

用上面这样方式来读取文件内容的话,速度很快,内存占用也比较低,特别适合操作大文件.

下面这个方式适合操作一些小的文件,速度和效率没有上面的好,所以建议以后操作文件的话,尽量用上面的。

>>> for i in open('hello.py').readlines():
...     print i
... 
#!/usr/bin/python2.5
print "hello.word!"

read方法和readline方法,
read()方法把整个文件的内容放到字符串里
readline()方法则把文件的内容按照行为单位放到列表里。
一般要替换文件里的某个字符的话,最好有readline,然后用循环把一行一行内容循环出来,再查找替换,这样效率比整个读到一个字符串里来查找匹配效果更高。

2 for循环

例如:

>>> for i in range(5):
...    print(i)
...

它中间处理的过程和下面的是一样的:

>>> L=[0,1,2,3,4]
>>> I=iter(L)
>>> I.next()
0
>>> I.next()
1
>>> I.next()
2
>>> I.next()
3
>>> I.next()
4
>>> I.next()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
StopIteration

每次调用迭代器调用next()方法返回结果,并让文件指针往下移动一行,最后已StopIteration异常结束迭代。

3.列表解析:

相比python for循环速度会快很多

例如:

>>> L=[x+10 for x in range(10)]
>>> L

[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
python会在解释器里对range(10)进行迭代,依次把列表里的内容取出来,赋值给最左边的x,然后执行x+10的操作,
并且把执行好的结果保存在列表里。等range(10)迭代完以后就新生成了一个列表,结果就是[10,11,12,13,14,15,16,17,18,19]
从上面可以看出,这也是建立python 列表的一个方法。

上面例子也可以用for循环来实现.

>>> res=[]
>>> for x in range(10):
...    res.append(x+10)
... 
>>> res
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

从上面可以看出,python列表解析比手动的for 更加精简,而且运行的更快(往往速度回快一倍),因为他们的迭代在解析器内部是以C语言的速度执行的,而不是以手动python代码执行的,特别对于较大的数据集合,这是使用列表解析的一个主要的性能优点.

遍历
1.通过序列取元素的方法进行遍历

root@10.1.6.200:python# vim 3.py
#!/usr/bin/python2.5
for i in 'hello':  #序列里的字符串
  print i,
 
y = [1,2,3,4,5,6]  #列表
for i in y:
  print i,

root@10.1.6.200:python# python 3.py
h e l l o 1 2 3 4 5 6

2.通过序列本身偏移指数(索引)的方法进行遍历

也就是迭代序列索引,注:迭代,重复执行一条指令.

root@10.1.6.200:python# vim 3.py
#!/usr/bin/python2.5
x='hello'
for i in range(len(x)):
  print x[i]
 
y = [1,2,3,4,5,6]
for i in range(len(y)):
  print y[i],
root@10.1.6.200:python# python 3.py
h e l l o 1 2 3 4 5 6

字典有2种方式取到其值:

1.先取字典key,在取索引的值

root@10.1.6.200:python# vim 5.py
#!/usr/bin/python2.5
z = {1:'a',2:'b',3:'c'}
for i in z:
  print z[i]
root@10.1.6.200:python# python 5.py
a
b
c

2.通过字典items方法,获取所有键值对,在利用元组拆分的方法获得对应值.

root@10.1.6.200:python# cat 5.py
#!/usr/bin/python2.5
z = {1:'a',2:'b',3:'c'}
print z.items()
for m,n in z.items():
  print m,n

root@10.1.6.200:python# python 5.py

[(1, 'a'), (2, 'b'), (3, 'c')]
1 a
2 b
3 c
Python 相关文章推荐
Python 冒泡,选择,插入排序使用实例
Feb 05 Python
python判断windows系统是32位还是64位的方法
May 11 Python
python生成器表达式和列表解析
Mar 10 Python
python去掉行尾的换行符方法
Jan 04 Python
Python实现的矩阵类实例
Aug 22 Python
python logging日志模块的详解
Oct 29 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
Python如何读取文件中图片格式
Jan 13 Python
Tensorflow tf.tile()的用法实例分析
May 22 Python
selenium切换标签页解决get超时问题的完整代码
Aug 30 Python
python爬取音频下载的示例代码
Oct 19 Python
Python的自动化部署模块Fabric的安装及使用指南
Jan 19 #Python
Python编程中time模块的一些关键用法解析
Jan 19 #Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 #Python
Python使用os模块和fileinput模块来操作文件目录
Jan 19 #Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 #Python
python结合API实现即时天气信息
Jan 19 #Python
Python+django实现文件下载
Jan 17 #Python
You might like
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
javascript事件模型代码
2007/07/01 Javascript
js 加载时自动调整图片大小
2008/05/28 Javascript
javascript innerText和innerHtml应用
2010/01/28 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
Python标准库之循环器(itertools)介绍
2014/11/25 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
python进程和线程用法知识点总结
2019/05/28 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
什么是抽象
2015/12/13 面试题
实习老师个人总结的自我评价
2013/09/28 职场文书
初一英语教学反思
2014/01/11 职场文书
高一物理教学反思
2014/01/24 职场文书
2014年清明节寄语
2014/04/03 职场文书
语文课外活动总结
2014/08/27 职场文书
2014年党小组工作总结
2014/12/20 职场文书
限期整改通知书
2015/04/22 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
入党申请书格式
2019/06/20 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python