浅析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生成随机验证码(中文验证码)示例
Apr 03 Python
跟老齐学Python之开始真正编程
Sep 12 Python
Python实现计算最小编辑距离
Mar 17 Python
Python单链表简单实现代码
Apr 27 Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 Python
深入浅析Python中的yield关键字
Jan 24 Python
Python异常处理操作实例详解
May 10 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
Python2和3字符编码的区别知识点整理
Aug 08 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 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 STRING 陷阱原理说明
2010/07/24 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
php面向对象重点知识分享
2019/09/27 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
代码获取历史上的今天发生的事
2014/04/11 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
jQuery 重复加载错误以及修复方法
2014/12/16 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
毕业生动漫设计求职信
2013/10/11 职场文书
分层教学实施方案
2014/03/19 职场文书
班干部演讲稿
2014/04/24 职场文书
家长会演讲稿
2014/04/26 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
淮海战役观后感
2015/06/11 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
浅谈Python数学建模之整数规划
2021/06/23 Python