浅析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多线程编程(七):使用Condition实现复杂同步
Apr 05 Python
在Python中使用PIL模块处理图像的教程
Apr 29 Python
详细讲解用Python发送SMTP邮件的教程
Apr 29 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
Apr 10 Python
python设置值及NaN值处理方法
Jul 03 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
python使用pymongo与MongoDB基本交互操作示例
Apr 09 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
python基于win32api实现键盘输入
Dec 09 Python
详解Python类和对象内容
Jun 22 Python
Python办公自动化PPT批量转换操作
Sep 15 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 $_ENV为空的原因分析
2009/06/01 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
最基础的Python的socket编程入门教程
2015/04/23 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
Atom的python插件和常用插件说明
2018/07/08 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
python与pycharm有何区别
2020/07/01 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
七一表彰活动方案
2014/01/18 职场文书
小学英语教学反思案例
2014/02/04 职场文书
《我的信念》教学反思
2014/02/15 职场文书
前处理班长职位说明书
2014/03/01 职场文书
售房协议书
2014/08/19 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
客房服务员岗位职责
2015/02/09 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
解析目标检测之IoU
2021/06/26 Python