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 相关文章推荐
python中常用的九种预处理方法分享
Sep 11 Python
100行python代码实现跳一跳辅助程序
Jan 15 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 Python
Python实现线程状态监测简单示例
Mar 28 Python
python 获取当天每个准点时间戳的实例
May 22 Python
pytorch 数据集图片显示方法
Jul 26 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
Python实现微信机器人的方法
Sep 06 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
Pycharm安装第三方库失败解决方案
Nov 17 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
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
php array_map()函数实例用法
2021/03/03 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
Windows下搭建python开发环境详细步骤
2020/07/20 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
python实现在线翻译
2020/06/18 Python
精灵市场:Pixie Market
2019/06/18 全球购物
如何进行Linux分区优化
2016/09/13 面试题
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
个性大学生自我评价
2013/12/04 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
医院信息公开实施方案
2014/05/09 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
刑事和解协议书范本
2014/11/19 职场文书
财务会计求职信范文
2015/03/20 职场文书
学校运动会简讯
2015/07/20 职场文书
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript