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中的__init__和__new__
Mar 12 Python
Python创建xml的方法
Mar 10 Python
全面了解python字符串和字典
Jul 07 Python
Python实现中一次读取多个值的方法
Apr 22 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
python 字典 setdefault()和get()方法比较详解
Aug 07 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
解决jupyter运行pyqt代码内核重启的问题
Apr 16 Python
python是怎么被发明的
Jun 15 Python
python3中for循环踩过的坑记录
Dec 14 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 json_encode奇怪问题说明
2011/09/27 PHP
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
Smarty3配置及入门语法
2017/02/22 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
ext 代码生成器
2009/08/07 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
深入理解Python异常处理的哲学
2019/02/01 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
详解Python 中的容器 collections
2020/08/17 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
联想台湾官网:Lenovo TW
2018/05/09 全球购物
解决方案设计综合面试题
2015/08/31 面试题
珍珠鸟教学反思
2014/02/01 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
模具专业求职信
2014/06/26 职场文书
十佳党员事迹材料
2014/08/28 职场文书
《西门豹》教学反思
2016/02/23 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
详解java如何集成swagger组件
2021/06/21 Java/Android