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 相关文章推荐
Windows下PyMongo下载及安装教程
Apr 27 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
python3 flask实现文件上传功能
Mar 20 Python
python使用xlrd和xlwt读写Excel文件的实例代码
Sep 05 Python
python仿evething的文件搜索器实例代码
May 13 Python
python处理excel绘制雷达图
Oct 18 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
python 实现百度网盘非会员上传超过500个文件的方法
Jan 07 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 Python
python析构函数用法及注意事项
Jun 22 Python
进行数据处理的6个 Python 代码块分享
Apr 06 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
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
PHP脚本数据库功能详解(中)
2006/10/09 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
2014/05/04 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
原生JS实现留言板
2020/03/26 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
Python内置异常类型全面汇总
2020/05/28 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
员工工作表扬信范文
2014/01/13 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
物业管理专业求职信
2014/06/11 职场文书
ktv好的活动方案
2014/08/17 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS
Python利器openpyxl之操作excel表格
2021/04/17 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
使用Django实现商城验证码模块的方法
2021/06/01 Python
react中的DOM操作实现
2021/06/30 Javascript