浅析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 17 Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
Python音频操作工具PyAudio上手教程详解
Jun 26 Python
python实现大文本文件分割
Jul 22 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
Python面向对象之私有属性和私有方法应用案例分析
Dec 31 Python
通过 Python 和 OpenCV 实现目标数量监控
Jan 05 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
pycharm sciview的图片另存为操作
Jun 01 Python
Python连接Impala实现步骤解析
Aug 04 Python
Python 中数组和数字相乘时的注意事项说明
May 10 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
牡丹941资料
2021/03/01 无线电
PHP脚本的10个技巧(1)
2006/10/09 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
jQuery事件对象总结
2016/10/17 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
python numpy中cumsum的用法详解
2019/10/17 Python
在TensorFlow中屏蔽warning的方式
2020/02/04 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
JAVA和C++的区别
2013/10/06 面试题
普通院校学生的自荐信
2013/11/27 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
请假条范文大全
2014/04/10 职场文书
个人租房协议书
2014/11/28 职场文书
党纪处分决定书
2015/06/24 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery