举例讲解如何在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编写弹球游戏的实现代码
Mar 12 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
Jun 04 Python
django自带serializers序列化返回指定字段的方法
Aug 21 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
torch 中各种图像格式转换的实现方法
Dec 26 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
Pytorch之finetune使用详解
Jan 18 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
python实现文法左递归的消除方法
May 22 Python
Python如何定义有可选参数的元类
Jul 31 Python
PyTorch安装与基本使用详解
Aug 31 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
德劲1103的维修打理经验
2021/03/02 无线电
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
php面向对象重点知识分享
2019/09/27 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
Exjs 入门篇
2010/04/07 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
python实现简单银行管理系统
2019/10/25 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
工程部主管岗位职责
2013/11/17 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
计划生育目标责任书
2015/05/09 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
python编写函数注意事项总结
2021/03/29 Python
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技