Python迭代用法实例教程


Posted in Python onSeptember 08, 2014

本文实例讲述了Python中迭代的用法,是一个非常实用的技巧。分享给大家供大家参考借鉴之用。具体分析如下:

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。

在Python中,迭代是通过for ... in来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码:

for (i=0; i<list.length; i++) {
  n = list[i];
}

可以看出,Python的for循环抽象程度要高于Java的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。

list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代:

>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
...   print key
...
a
c
b

因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.itervalues(),如果要同时迭代key和value,可以用for k, v in d.iteritems()。

由于字符串也是可迭代对象,因此,也可以作用于for循环:

>>> for ch in 'ABC':
...   print ch
...
A
B
C

所以,当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。

那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False

最后一个小问题,如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

>>> for i, value in enumerate(['A', 'B', 'C']):
...   print i, value
...
0 A
1 B
2 C

上面的for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:

>>> for x, y in [(1, 1), (2, 4), (3, 9)]:
...   print x, y
...
1 1
2 4
3 9

小结:

任何可迭代对象都可以作用于for循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for循环。

希望本文所述关于迭代的实例对大家Python程序设计的学习有所帮助。

Python 相关文章推荐
python3使用tkinter实现ui界面简单实例
Jan 10 Python
Python中的面向对象编程详解(上)
Apr 13 Python
Python连接DB2数据库
Aug 27 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
python pandas中DataFrame类型数据操作函数的方法
Apr 08 Python
pytorch构建网络模型的4种方法
Apr 13 Python
PyCharm代码回滚,恢复历史版本的解决方法
Oct 22 Python
Python函数中不定长参数的写法
Feb 13 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
如何用Python徒手写线性回归
Jan 25 Python
Python切片用法实例教程
Sep 08 #Python
Python常用模块用法分析
Sep 08 #Python
python实现斐波那契递归函数的方法
Sep 08 #Python
Python内置函数的用法实例教程
Sep 08 #Python
Python中函数的用法实例教程
Sep 08 #Python
Python多线程实例教程
Sep 06 #Python
Python Tkinter基础控件用法
Sep 03 #Python
You might like
mysql+php分页类(已测)
2008/03/31 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
微信小程序支付PHP代码
2018/08/23 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
pyramid配置session的方法教程
2013/11/27 Python
python文件和目录操作方法大全(含实例)
2014/03/12 Python
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
什么时候用assert
2015/05/08 面试题
final, finally, finalize的区别
2012/03/01 面试题
2014年小学语文工作总结
2014/12/20 职场文书
实习生个人总结范文
2015/02/28 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
跑出一片天观后感
2015/06/08 职场文书
总经理年会致辞
2015/07/29 职场文书
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript