浅析python中的迭代与迭代对象


Posted in Python onOctober 08, 2018

什么是python的迭代

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。

(在Python中,迭代是通过for ... in来完成的)

Python的for循环抽象程度要高于C的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。

(可以直接作用于for循环的对象统称为可迭代对象(Iterable),如list、tuple、dict、set、str等。)

list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是python的可迭代对象,无论有无下标,都可以迭代,比如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.values(),如果要同时迭代key和value,可以用for k, v in d.items()。

由于字符串也是可迭代对象,因此,也可以作用于for循环:

>>> for ch in 'ABC':
...   print(ch)
...ABC

所以,当我们使用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

以上就是本篇文章所讲述的所有内容,这篇文章主要介绍了相关于python中迭代和迭代对象的知识,希望你能借助资料从而理解上述所说的内容。希望我在这片文章所讲述的内容能够对你有所帮助,让你学习python更加轻松,感谢大家对三水点靠木的支持。

Python 相关文章推荐
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
python基础教程项目三之万能的XML
Apr 02 Python
python3实现域名查询和whois查询功能
Jun 21 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
在Pycharm中修改文件默认打开方式的方法
Jan 17 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
Python箱型图绘制与特征值获取过程解析
Oct 22 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
基于Python的一个自动录入表格的小程序
Aug 05 Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 Python
实例讲解python中的序列化知识点
Oct 08 #Python
实例讲解python中的协程
Oct 08 #Python
详解python分布式进程
Oct 08 #Python
python中多个装饰器的执行顺序详解
Oct 08 #Python
使用EduBlock轻松学习Python编程
Oct 08 #Python
Django forms组件的使用教程
Oct 08 #Python
详解关于Django中ORM数据库迁移的配置
Oct 08 #Python
You might like
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
php去掉文件前几行的方法
2015/07/29 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
js判断屏幕分辨率的代码
2013/07/16 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
2017/10/17 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
政府法律服务方案
2014/06/14 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
python OpenCV学习笔记
2021/03/31 Python
关于MySQL中explain工具的使用
2023/05/08 MySQL