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 31 Python
浅谈python多线程和队列管理shell程序
Aug 04 Python
python基础教程之Filter使用方法
Jan 17 Python
Python基础之getpass模块详细介绍
Aug 10 Python
python unittest实现api自动化测试
Apr 04 Python
python爬虫之模拟登陆csdn的实例代码
May 18 Python
pygame游戏之旅 载入小车图片、更新窗口
Nov 20 Python
Python中shapefile转换geojson的示例
Jan 03 Python
基于wxPython的GUI实现输入对话框(1)
Feb 27 Python
Django 表单模型选择框如何使用分组
May 16 Python
使用pandas读取文件的实现
Jul 31 Python
Python面向对象原理与基础语法详解
Jan 02 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控制文件下载速度的方法
2015/03/24 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
原生js实现随机点名
2020/07/05 Javascript
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
python的re模块应用实例
2014/09/26 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
详解Python IO口多路复用
2020/06/17 Python
详解anaconda安装步骤
2020/11/23 Python
2015年幼儿园毕业感言
2014/02/12 职场文书
工程管理英文求职信
2014/03/18 职场文书
教研活动总结
2014/04/28 职场文书
幼儿园课题实施方案
2014/05/14 职场文书
繁星春水读书笔记
2015/06/30 职场文书
家访教师心得体会
2016/01/23 职场文书
python脚本框架webpy的url映射详解
2021/11/20 Python