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 matplotlib.pyplot.draw()界面绘制异常问题的解决
Sep 24 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
Python实现重建二叉树的三种方法详解
Jun 23 Python
Python在for循环中更改list值的方法【推荐】
Aug 17 Python
对python打乱数据集中X,y标签对的方法详解
Dec 14 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 Python
套娃式文件夹如何通过Python批量处理
Aug 23 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
Django使用channels + websocket打造在线聊天室
May 20 Python
Python卷积神经网络图片分类框架详解分析
Nov 07 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
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
2014/05/04 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
2015/12/22 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
layui表格数据重载
2019/07/27 Javascript
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
python画条形图的具体代码
2022/04/20 Python