举例讲解如何在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使用PyV8执行javascript代码示例分享
Dec 04 Python
Python爬虫框架Scrapy安装使用步骤
Apr 01 Python
python字符串对其居中显示的方法
Jul 11 Python
用matplotlib画等高线图详解
Dec 14 Python
Python爬豆瓣电影实例
Feb 23 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
python简易远程控制单线程版
Jun 20 Python
在Python 的线程中运行协程的方法
Feb 24 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
利用python生成照片墙的示例代码
Apr 09 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 Python
Django中ORM的基本使用教程
Dec 22 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支持的协议与封装协议总结(推荐)
2017/11/17 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
javascript 写类方式之七
2009/07/05 Javascript
Prototype ObjectRange对象学习
2009/07/19 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
解析Python中的异常处理
2015/04/28 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
Python生成密码库功能示例
2017/05/23 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
python中entry用法讲解
2020/12/04 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
毕业生自荐书
2013/12/18 职场文书
安踏广告词改编版
2014/03/21 职场文书
欢迎家长标语
2014/10/08 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
大学生年度个人总结
2015/02/15 职场文书
初一英语教学反思
2016/02/15 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
JavaScript文档对象模型DOM
2021/11/20 Javascript