浅析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入门篇之条件、循环
Oct 17 Python
python读写json文件的简单实现
Apr 11 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
在Pycharm中项目解释器与环境变量的设置方法
Oct 29 Python
浅析Python 引号、注释、字符串
Jul 25 Python
python datetime中strptime用法详解
Aug 29 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
如何解决.cuda()加载用时很长的问题
May 24 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 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
输出控制类
2006/10/09 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
js实现进度条的方法
2015/02/13 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
python基于opencv实现人脸识别
2021/01/04 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
三方合作协议书范本
2014/04/18 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
公司租房协议书范本
2014/10/08 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
高考升学宴主持词
2019/06/21 职场文书
详解Python牛顿插值法
2021/05/11 Python
Python实现拼音转换
2021/06/07 Python