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日期操作学习笔记
Oct 07 Python
Python读写文件方法总结
Jun 09 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
python控制台实现tab补全和清屏的例子
Aug 20 Python
python3 实现调用串口功能
Dec 26 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
Django基于客户端下载文件实现方法
Apr 21 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 Python
Python使用openpyxl复制整张sheet
Mar 24 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 24 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实现将GB编码转换为UTF8
2006/11/25 PHP
彻底杜绝PHP的session cookie错误
2009/08/09 PHP
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
Python中for循环详解
2014/01/17 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
python根据url地址下载小文件的实例
2018/12/18 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
使用python实现对元素的长截图功能
2019/11/14 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
python 实现超级玛丽游戏
2020/11/25 Python
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
表彰先进集体通报
2014/01/12 职场文书
规划编制实施方案
2014/03/15 职场文书
解放思想演讲稿
2014/09/11 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
无故旷工检讨书
2015/08/15 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL