python进阶教程之循环相关函数range、enumerate、zip


Posted in Python onAugust 30, 2014

在“循环”一节,我们已经讨论了Python基本的循环语法。这一节,我们将接触更加灵活的循环方式。

range()

在Python中,for循环后的in跟随一个序列的话,循环每次使用的序列元素,而不是序列的下标。

之前我们已经使用过range()来控制for循环。现在,我们继续开发range的功能,以实现下标对循环的控制:

S = 'abcdefghijk'

for i in range(0,len(S),2):

    print S[i]

在该例子中,我们利用len()函数和range()函数,用i作为S序列的下标来控制循环。在range函数中,分别定义上限,下限和每次循环的步长。这就和C语言中的for循环相类似了。

enumerate()

利用enumerate()函数,可以在每次循环中同时得到下标和元素:

S = 'abcdefghijk'

for (index,char) in enumerate(S):

    print index

    print char

实际上,enumerate()在每次循环中,返回的是一个包含两个元素的定值表(tuple),两个元素分别赋予index和char

zip()

如果你多个等长的序列,然后想要每次循环时从各个序列分别取出一个元素,可以利用zip()方便地实现:

ta = [1,2,3]

tb = [9,8,7]

tc = ['a','b','c']

for (a,b,c) in zip(ta,tb,tc):

    print(a,b,c)

每次循环时,从各个序列分别从左到右取出一个元素,合并成一个tuple,然后tuple的元素赋予给a,b,c

zip()函数的功能,就是从多个列表中,依次各取出一个元素。每次取出的(来自不同列表的)元素合成一个元组,合并成的元组放入zip()返回的列表中。zip()函数起到了聚合列表的功能。

我们可以分解聚合后的列表,如下:

ta = [1,2,3]

tb = [9,8,7]
# cluster

zipped = zip(ta,tb)

print(zipped)
# decompose

na, nb = zip(*zipped)

print(na, nb)

总结

range()

enumerate()

zip()

Python 相关文章推荐
Python实现二叉搜索树
Feb 03 Python
Linux中Python 环境软件包安装步骤
Mar 31 Python
python实现对输入的密文加密
Mar 20 Python
pymongo中聚合查询的使用方法
Mar 22 Python
python3.7 sys模块的具体使用
Jul 22 Python
python接口调用已训练好的caffe模型测试分类方法
Aug 26 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
Matplotlib自定义坐标轴刻度的实现示例
Jun 18 Python
使用Python封装excel操作指南
Jan 29 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 Python
详解Python中openpyxl模块基本用法
Feb 23 Python
使用python求解迷宫问题的三种实现方法
Mar 17 Python
python进阶教程之函数参数的多种传递方法
Aug 30 #Python
python进阶教程之模块(module)介绍
Aug 30 #Python
Python中的闭包实例详解
Aug 29 #Python
python进阶教程之文本文件的读取和写入
Aug 29 #Python
Python中__call__用法实例
Aug 29 #Python
python进阶教程之词典、字典、dict
Aug 29 #Python
python字符串排序方法
Aug 29 #Python
You might like
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
浅析php创建者模式
2014/11/25 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
Python最基本的输入输出详解
2015/04/25 Python
Python 爬虫图片简单实现
2017/06/01 Python
python实现各进制转换的总结大全
2017/06/18 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
python 公共方法汇总解析
2019/09/16 Python
解决Python3下map函数的显示问题
2019/12/04 Python
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
学生学习总结的自我评价
2013/10/22 职场文书
技术人员面试提纲
2013/11/28 职场文书
如何写你的创业计划书
2014/01/07 职场文书
酒店总经理欢迎词
2014/01/15 职场文书
小学运动会报道稿
2014/10/04 职场文书
网络研修随笔感言
2015/11/18 职场文书
Python自动化之批量处理工作簿和工作表
2021/06/03 Python
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis