Python实现迭代时使用索引的方法示例


Posted in Python onJune 05, 2018

本文实例讲述了Python实现迭代时使用索引的方法。分享给大家供大家参考,具体如下:

索引迭代

Python中,迭代永远是取出元素本身,而非元素的索引

对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办?

方法是使用 enumerate()函数:

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> for index, name in enumerate(L):
...   print index, '-', name
...
0 - Adam
1 - Lisa
2 - Bart
3 - Paul

使用 enumerate()函数,我们可以在for循环中同时绑定索引index和元素name。但是,这不是 enumerate()的特殊语法。实际上,enumerate()函数把:

['Adam', 'Lisa', 'Bart', 'Paul']

变成了类似:

[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]

因此,迭代的每一个元素实际上是一个tuple:

for t in enumerate(L):
  index = t[0]
  name = t[1]
  print index, '-', name

如果我们知道每个tuple元素都包含两个元素,for循环又可以进一步简写为:

for index, name in enumerate(L):
  print index, '-', name

这样不但代码更简单,而且还少了两条赋值语句。

可见,索引迭代也不是真的按索引访问,而是由 enumerate()函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。

同时,也可以采用zip的方法给迭代对象加上索引

zip()函数可以把两个 list 变成一个 list:

>>> zip([10, 20, 30], ['A', 'B', 'C'])
[(10, 'A'), (20, 'B'), (30, 'C')]

在迭代 ['Adam', 'Lisa', 'Bart', 'Paul'] 时,如果我们想打印出名次 - 名字(名次从1开始),请考虑如何在迭代中打印出来。

提示:考虑使用zip()函数和range()函数

代码如下:

L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in zip(range(1, 5), L):
  print index, '-', name

输出结果为:

1 - Adam
2 - Lisa
3 - Bart
4 - Paul

索引成功加上

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Flask框架的学习指南之制作简单blog系统
Nov 20 Python
Python有序字典简单实现方法示例
Sep 28 Python
Python探索之修改Python搜索路径
Oct 25 Python
python利用smtplib实现QQ邮箱发送邮件
May 20 Python
python使用scrapy发送post请求的坑
Sep 04 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
python 3.6.7实现端口扫描器
Sep 04 Python
面向对象学习之pygame坦克大战
Sep 11 Python
Python的pygame安装教程详解
Feb 10 Python
python中提高pip install速度
Feb 14 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
如何让python的运行速度得到提升
Jul 08 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 #Python
django反向解析和正向解析的方式
Jun 05 #Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 #Python
Python实现字典(dict)的迭代操作示例
Jun 05 #Python
python矩阵转换为一维数组的实例
Jun 05 #Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 #Python
django反向解析URL和URL命名空间的方法
Jun 05 #Python
You might like
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
深入探讨javascript中的数据类型
2015/03/04 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
Python中的默认参数实例分析
2018/01/29 Python
python编程使用协程并发的优缺点
2018/09/20 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
C语言面试题
2013/05/19 面试题
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
出纳岗位职责
2013/11/09 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
新闻稿格式范文
2015/07/18 职场文书
2016年大学生社区服务活动总结
2016/04/06 职场文书
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技
Go语言编译原理之变量捕获
2022/08/05 Golang