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代码真的很爽
Aug 26 Python
Python 网络编程起步(Socket发送消息)
Sep 06 Python
在windows系统中实现python3安装lxml
Mar 23 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
windows下安装Python的XlsxWriter模块方法
May 03 Python
django-crontab 定时执行任务方法的实现
Sep 06 Python
python集合删除多种方法详解
Feb 10 Python
Django --Xadmin 判断登录者身份实例
Jul 03 Python
python 写一个性能测试工具(一)
Oct 24 Python
Python数据类型最全知识总结
May 31 Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
Apr 28 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 面向对象的一个例子
2011/04/12 PHP
php设计模式 State (状态模式)
2011/06/26 PHP
JS的反射问题
2010/04/07 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
详解Python中where()函数的用法
2018/03/27 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
python读取LMDB中图像的方法
2018/07/02 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
解决python运行效率不高的问题
2020/07/20 Python
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
汽车广告策划方案
2014/05/31 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
廉政承诺书范文
2015/04/28 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
离婚案件原告代理词
2015/05/23 职场文书
会议简讯范文
2015/07/20 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android