Python中的zip函数使用示例


Posted in Python onJanuary 29, 2015

zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:

1.示例1:

x = [1, 2, 3]

y = [4, 5, 6]

z = [7, 8, 9]

xyz = zip(x, y, z)

print xyz

运行的结果是:

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

从这个结果可以看出zip函数的基本运作方式。

2.示例2:

x = [1, 2, 3]

y = [4, 5, 6, 7]

xy = zip(x, y)

print xy

运行的结果是:

[(1, 4), (2, 5), (3, 6)]

从这个结果可以看出zip函数的长度处理方式。

3.示例3:

x = [1, 2, 3]

x = zip(x)

print x

运行的结果是:
[(1,), (2,), (3,)]

从这个结果可以看出zip函数在只有一个参数时运作的方式。

4.示例4:

x = zip()

print x

运行的结果是:
[]

从这个结果可以看出zip函数在没有参数时运作的方式。

5.示例5:

x = [1, 2, 3]

y = [4, 5, 6]

z = [7, 8, 9]

xyz = zip(x, y, z)

u = zip(*xyz)

print u

运行的结果是:

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

一般认为这是一个unzip的过程,它的运行机制是这样的:

在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

那么,zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))

所以,运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

注:在函数调用中使用*list/tuple的方式表示将list/tuple分开,作为位置参数传递给对应函数(前提是对应函数支持不定个数的位置参数)

6.示例6:

x = [1, 2, 3]

r = zip(* [x] * 3)

print r

运行的结果是:
[(1, 1, 1), (2, 2, 2), (3, 3, 3)]

它的运行机制是这样的:

[x]生成一个列表的列表,它只有一个元素x

[x] * 3生成一个列表的列表,它有3个元素,[x, x, x]

zip(* [x] * 3)的意思就明确了,zip(x, x, x)

Python 相关文章推荐
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
Python入门之modf()方法的使用
May 15 Python
python实现自动登录人人网并采集信息的方法
Jun 28 Python
Python实现批量转换文件编码的方法
Jul 28 Python
python unittest实现api自动化测试
Apr 04 Python
Python检测数据类型的方法总结
May 20 Python
python将字符串转换成json的方法小结
Jul 09 Python
django2.2 和 PyMySQL版本兼容问题
Feb 17 Python
Python实现SMTP邮件发送
Jun 16 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
Django视图类型总结
Feb 17 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 Python
Python的另外几种语言实现
Jan 29 #Python
python中使用xlrd、xlwt操作excel表格详解
Jan 29 #Python
Python中实现常量(Const)功能
Jan 28 #Python
Python使用random和tertools模块解一些经典概率问题
Jan 28 #Python
Python中的异常处理学习笔记
Jan 28 #Python
Python中集合类型(set)学习小结
Jan 28 #Python
Python中使用装饰器和元编程实现结构体类实例
Jan 28 #Python
You might like
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
php二分查找二种实现示例
2014/03/12 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
javascript 跳转代码集合
2009/12/03 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
详解django中自定义标签和过滤器
2017/07/03 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
英文自我鉴定
2013/12/10 职场文书
市场部规章制度
2014/01/24 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
房屋所有权证明
2014/10/20 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python