举例讲解如何在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基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
Python 类与元类的深度挖掘 II【经验】
May 06 Python
简单了解OpenCV是个什么东西
Nov 10 Python
numpy matrix和array的乘和加实例
Jun 28 Python
Django 外键的使用方法详解
Jul 19 Python
Python OpenCV调用摄像头检测人脸并截图
Aug 20 Python
django 中QuerySet特性功能详解
Jul 25 Python
Python爬虫学习之翻译小程序
Jul 30 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 Python
基于python代码批量处理图片resize
Jun 04 Python
python实现凯撒密码、凯撒加解密算法
Jun 11 Python
keras分类之二分类实例(Cat and dog)
Jul 09 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编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
php购物车实现代码
2011/10/10 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
如何使用 vue-cli 创建模板项目
2020/11/19 Vue.js
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
Python3搜索及替换文件中文本的方法
2015/05/22 Python
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
python实现扫雷小游戏
2020/04/24 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
Python识别验证码的实现示例
2020/09/30 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
总经理岗位职责说明书
2014/07/30 职场文书
个人创业事迹材料
2014/12/30 职场文书
店铺转让协议书
2015/01/29 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python
Python中的pprint模块
2021/11/27 Python
Python if else条件语句形式详解
2022/03/24 Python
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏
Python使用Web框架Flask开发项目
2022/06/01 Python