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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
浅析python 内置字符串处理函数的使用方法
Jun 11 Python
深入浅析ImageMagick命令执行漏洞
Oct 11 Python
Python yield与实现方法代码分析
Feb 06 Python
如何用Python合并lmdb文件
Jul 02 Python
Python实现全排列的打印
Aug 18 Python
使用Python实现微信提醒备忘录功能
Dec 04 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
Django forms表单 select下拉框的传值实例
Jul 19 Python
Django项目中使用JWT的实现代码
Nov 04 Python
Python input函数使用实例解析
Nov 22 Python
Python : turtle色彩控制实例详解
Jan 19 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
我的论坛源代码(八)
2006/10/09 PHP
php addslashes和mysql_real_escape_string
2010/01/24 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
超简单的微信小程序轮播图
2019/11/22 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
[20:30]职业巡回赛回顾
2018/08/09 DOTA
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
python写入文件自动换行问题的方法
2019/07/05 Python
python模块导入的方法
2019/10/24 Python
Django用户身份验证完成示例代码
2020/04/03 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
德尔福集团DELPHI的笔试题
2012/02/22 面试题
毕业自我评价范文
2013/11/17 职场文书
授权委托书(完整版)
2014/09/10 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书