举例讲解如何在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中实现k-means聚类算法详解
Nov 11 Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 Python
使用Python机器学习降低静态日志噪声
Sep 29 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
windows下numpy下载与安装图文教程
Apr 02 Python
python计算n的阶乘的方法代码
Oct 25 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
Django 解决上传文件时,request.FILES为空的问题
May 20 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 Python
Python读取和写入Excel数据
Apr 20 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个人网站架设连环讲(三)
2006/10/09 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
PHP关联链接常用代码
2012/11/05 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
ant design实现圈选功能
2019/12/17 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
python机器学习实战之树回归详解
2017/12/20 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
python django生成迁移文件的实例
2019/08/31 Python
wxPython实现文本框基础组件
2019/11/18 Python
python路径的写法及目录的获取方式
2019/12/26 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
详解python 内存优化
2020/08/17 Python
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
小学生班会演讲稿
2014/01/09 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
演讲稿开场白台词
2014/08/25 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers