举例讲解如何在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实现的中国剩余定理算法示例
Aug 05 Python
浅谈python爬虫使用Selenium模拟浏览器行为
Feb 23 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
Apr 19 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
Jun 27 Python
Pycharm无法使用已经安装Selenium的解决方法
Oct 13 Python
Python在图片中插入大量文字并且自动换行
Jan 02 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
Jun 08 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
python 画图 图例自由定义方式
Apr 17 Python
Python基于pip实现离线打包过程详解
May 15 Python
matplotlib部件之套索Lasso的使用
Feb 24 Python
Python读写Excel表格的方法
Mar 02 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性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
2014过年倒计时示例
2014/01/31 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
详解PHP队列的实现
2019/03/14 PHP
IE的fireEvent方法概述及应用
2013/02/22 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
在pycharm中python切换解释器失败的解决方法
2018/10/29 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
python飞机大战游戏实例讲解
2020/12/04 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
Timberland法国官网:购买靴子、鞋子、衣服、夹克和配饰
2019/11/30 全球购物
十佳青年个人事迹材料
2014/01/28 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
Python基础之字符串格式化详解
2021/04/21 Python
Python+Appium自动化测试的实战
2021/06/30 Python