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通过shutil实现快速文件复制的方法
Mar 14 Python
深入理解Python中装饰器的用法
Jun 28 Python
详解Python pygame安装过程笔记
Jun 05 Python
Python3之手动创建迭代器的实例代码
May 22 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
Python3安装pip工具的详细步骤
Oct 14 Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 Python
关于Django Models CharField 参数说明
Mar 31 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 Python
python如何利用cv2模块读取显示保存图片
Jun 04 Python
python自动化测试之Selenium详解
Mar 13 Python
python中mongodb包操作数据库
Apr 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
php中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
javascript 特殊字符串
2009/02/25 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
让python在hadoop上跑起来
2016/01/27 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
python实现各进制转换的总结大全
2017/06/18 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
python如何建立全零数组
2020/07/19 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
住房公积金接收函
2014/01/09 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
万里长城导游词
2015/01/30 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技