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 相关文章推荐
Python字符遍历的艺术
Sep 06 Python
python批量生成本地ip地址的方法
Mar 23 Python
Python编程实现线性回归和批量梯度下降法代码实例
Jan 04 Python
python opencv之SIFT算法示例
Feb 24 Python
Django后台admin的使用详解
Jul 08 Python
关于sys.stdout和print的区别详解
Dec 05 Python
python 字典套字典或列表的示例
Dec 16 Python
python+adb命令实现自动刷视频脚本案例
Apr 23 Python
python2和python3哪个使用率高
Jun 23 Python
python 实现aes256加密
Nov 27 Python
python机器学习实现oneR算法(以鸢尾data为例)
Mar 03 Python
Python与C++中梯度方向直方图的实现
Mar 17 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
不要轻信 PHP_SELF的安全问题
2009/09/05 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
python实现rest请求api示例
2014/04/22 Python
Python创建xml文件示例
2017/03/22 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
python encrypt 实现AES加密的实例详解
2020/02/20 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
感恩教师主题班会
2015/08/12 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
详解Python描述符的工作原理
2021/06/11 Python