举例讲解如何在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实现通过哈希算法检测图片重复的教程
Apr 02 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
Nov 11 Python
深入理解Python中变量赋值的问题
Jan 12 Python
Python探索之URL Dispatcher实例详解
Oct 28 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
python点击鼠标获取坐标(Graphics)
Aug 10 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
Oct 12 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
matplotlib quiver箭图绘制案例
Apr 17 Python
Python 制作自动化翻译工具
Apr 25 Python
python 详解turtle画爱心代码
Feb 15 Python
Python如何使用循环结构和分支结构
Apr 13 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
一个简单的PHP验证码实现代码
2014/05/10 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
js控制input输入字符解析
2013/12/27 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
python实现将文本转换成语音的方法
2015/05/28 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
技校生自我鉴定范文
2013/09/26 职场文书
北京大学自荐信范文
2014/01/28 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
会计自我鉴定
2014/02/04 职场文书
干部现实表现材料
2014/02/13 职场文书
促销活动总结怎么写
2014/06/25 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
golang中的并发和并行
2021/05/08 Golang
详解JVM系列之内存模型
2021/06/10 Javascript
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js