浅析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网络编程学习笔记(一)
Jun 09 Python
Windows系统配置python脚本开机启动的3种方法分享
Mar 10 Python
简单介绍Python的Django框架加载模版的方式
Jul 20 Python
Python使用三种方法实现PCA算法
Dec 12 Python
python 字符串和整数的转换方法
Jun 25 Python
python 去除txt文本中的空格、数字、特定字母等方法
Jul 24 Python
Selenium元素的常用操作方法分析
Aug 10 Python
python多线程分块读取文件
Aug 29 Python
使用python绘制温度变化雷达图
Oct 18 Python
Python json读写方式和字典相互转化
Apr 18 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 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
TMDPHP 模板引擎使用教程
2012/03/13 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
javascript 高级语法之继承的基本使用方法示例
2019/11/11 Javascript
Vue+Element实现网页版个人简历系统(推荐)
2019/12/31 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
python查看微信好友是否删除自己
2016/12/19 Python
Django自定义分页与bootstrap分页结合
2021/02/22 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
python实现移位加密和解密
2019/03/22 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
保安队长职务说明书
2014/02/23 职场文书
团队经理竞聘书
2014/03/31 职场文书
119消防日活动总结
2014/08/29 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
素质教育培训心得体会
2016/01/19 职场文书
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL