python中的 zip函数详解及用法举例


Posted in Python onFebruary 16, 2020

python中zip()函数用法举例

定义:zip([iterable, ...])

zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),看下面的例子就明白了:

示例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)]

示例2,在两个list长度不相等时的情况:

x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)

print xy运行的结果是:

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

示例3

>>> name=('jack','beginman','sony','pcky')
>>> age=(2001,2003,2005,2000)
>>> for a,n in zip(name,age):
  print a,n

输出:

jack 2001 beginman 2003 sony 2005 pcky 2000

示例4,只有一个list的情况:

x = [1, 2, 3]
x = zip(x)

print x运行的结果是:

[(1,), (2,), (3,)]

示例5:

搭配for循环,支持并行迭代操作方法 zip()方法用在for循环中,就会支持并行迭代:

l1 = [2,3,4]

l2 = [4,5,6]

for (x,y) in zip(l1,l2):


 print x,y,'--',x*y
2 4 -- 8
3 5 -- 15
4 6 -- 24

其实它的工作原理就是使用了zip()的结果,在for循环里解包zip结果中的元组,用元组赋值运算。就好像(x,y)=(2,6),赋值、序列解包操作。在对文件的操作中我们也会用到遍历,例如Python遍历文件夹目录与文件操作,就是很方便实用的。

1

示例6:二维矩阵变换(矩阵的行列互换)

比如我们有一个由列表描述的二维矩阵 ,a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]],通过python列表推导的方法,我们也能轻易完成这个任务

 

 print [ [row[col] for row in a] for col in range(len(a[0]))] [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

另外一种让人困惑的方法就是利用zip函数:

>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> zip(*a) [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

>>> map(list,zip(*a))

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

这种方法速度更快但也更难以理解,将list看成tuple解压,恰好得到我们“行列互换”的效果,再通过对每个元素应用list()函数,将tuple转换为list

示例7:以指定概率获取元素

>>> import random 
>>> def random_pick(seq,probabilities): 
 
x = random.uniform(0, 1) 

 cumulative_probability = 0.0 
 
for item, item_probability in zip(seq, probabilities): 
 
cumulative_probability += item_probability 

 if x < cumulative_probability: 
 

break 
 
return item 

>>> for i in range(15): 

random_pick("abc",[0.1,0.3,0.6]) 

'c' 'b' 'c' 'c' 'a' 'b' 'c' 'c' 'c' 'a' 'b' 'b' 'c' 'a' 'c'

这个函数有个限制,指定概率的列表必须和元素一一对应,而且和为1,否则这个函数可能不能像预想的那样工作。稍微解释下,先利用random.uniform()函数生成一个0-1之间的随机数并复制给x,利用zip()函数将元素和他对应的概率打包成tuple,然后将每个元素的概率进行叠加,直到和大于x终止循环

这样,”a”被选中的概率就是x取值位于0-0.1的概率,同理”b”为0.1-0.4,”c”为0.4-1.0,假设x是在0-1之间平均取值的,显然我们的目的已经达到

总结

以上所述是小编给大家介绍的python中的 zip函数详解及用法举例,希望对大家有所帮助!

Python 相关文章推荐
python实现的一个火车票转让信息采集器
Jul 09 Python
Python中super函数的用法
Nov 17 Python
Python用imghdr模块识别图片格式实例解析
Jan 11 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
python抓取搜狗微信公众号文章
Apr 01 Python
利用selenium爬虫抓取数据的基础教程
Jun 10 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
python如何获取apk的packagename和activity
Jan 10 Python
Python Django view 两种return的实现方式
Mar 16 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 Python
Python极值整数的边界探讨分析
Sep 15 Python
Python使用pandas导入csv文件内容的示例代码
Dec 24 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 #Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 #Python
使用Tensorboard工具查看Loss损失率
Feb 15 #Python
Keras使用tensorboard显示训练过程的实例
Feb 15 #Python
Python利用逻辑回归分类实现模板
Feb 15 #Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
Feb 15 #Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 #Python
You might like
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
JS重载实现方法分析
2016/12/16 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
简单介绍Python中的round()方法
2015/05/15 Python
python 中split 和 strip的实例详解
2017/07/12 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
中间件的定义
2016/08/09 面试题
机械设计职业生涯规划书
2013/12/27 职场文书
小学英语听课心得体会
2016/01/14 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书