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 编码处理-str与Unicode的区别
Sep 06 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
Jun 12 Python
深入理解Python分布式爬虫原理
Nov 23 Python
python将list转为matrix的方法
Dec 12 Python
Django Celery异步任务队列的实现
Jul 24 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
Python生态圈图像格式转换问题(推荐)
Dec 02 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
python用字节处理文件实例讲解
Apr 13 Python
Python实现排序方法常见的四种
Jul 15 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
Email+URL的判断和自动转换函数
2006/10/09 PHP
关于php循环跳出的问题
2013/07/01 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
详解Vue中localstorage和sessionstorage的使用
2017/12/22 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
python多线程与多进程及其区别详解
2019/08/08 Python
python中的测试框架
2020/11/13 Python
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
口头翻译求职人自荐信
2013/12/07 职场文书
门卫工作岗位职责
2013/12/17 职场文书
市场营销求职信范文
2014/02/21 职场文书
企业业务员岗位职责
2014/03/14 职场文书
学生个人自我鉴定
2014/03/26 职场文书
社会工作专业自荐信
2014/09/26 职场文书
学习退步检讨书
2014/09/28 职场文书
房屋转让协议书
2014/10/18 职场文书
后进生评语大全
2015/01/04 职场文书
幼师自荐信范文(2016推荐篇)
2016/01/28 职场文书
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis