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使用urllib2获取网络资源实例讲解
Dec 02 Python
Python查看多台服务器进程的脚本分享
Jun 11 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
Aug 23 Python
解析Python编程中的包结构
Oct 25 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
浅谈python中的面向对象和类的基本语法
Jun 13 Python
Python解决两个整数相除只得到整数部分的实例
Nov 10 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
Python判断有效的数独算法示例
Feb 23 Python
对Django中内置的User模型实例详解
Aug 16 Python
基于python实现ROC曲线绘制广场解析
Jun 28 Python
matplotlib 三维图表绘制方法简介
Sep 20 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
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
JS动态创建元素的两种方法
2016/04/20 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
学习Vue组件实例
2018/04/28 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
Python实现上下班抢个顺风单脚本
2018/02/07 Python
Python内置函数reversed()用法分析
2018/03/20 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
2019/04/28 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
python 搜索大文件的实例代码
2019/07/08 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
HTML5 input新增type属性color颜色拾取器的实例代码
2018/08/27 HTML / CSS
满月酒答谢词
2014/01/14 职场文书
2014政务公开实施方案
2014/02/19 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
大二学生自我检讨书
2014/10/23 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
期末考试复习计划
2015/01/19 职场文书
社区重阳节活动总结
2015/03/24 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
Python Socket编程详解
2021/04/25 Python
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript