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中logging模块的用法实例
Sep 29 Python
分析用Python脚本关闭文件操作的机制
Jun 28 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
利用Django-environ如何区分不同环境
Aug 26 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
Python GUI库PyQt5样式QSS子控件介绍
Feb 25 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
python使用pymongo与MongoDB基本交互操作示例
Apr 09 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
python 实现图片批量压缩的示例
Dec 18 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 sprintf()函数用例解析
2011/05/18 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
递归删除一个节点以及该节点下的所有节点示例
2014/03/19 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
2019/04/10 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
深入分析PHP设计模式
2020/06/15 PHP
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
JavaScript 对象、函数和继承
2009/07/07 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
利用Python如何生成随机密码
2016/04/20 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
this关键字的含义
2015/04/08 面试题
php优化查询foreach代码实例讲解
2021/03/24 PHP
运动会入场词200字
2014/02/15 职场文书
大学专科自荐信
2014/06/17 职场文书
2014年项目工作总结
2014/11/24 职场文书
会计出纳岗位职责
2015/03/31 职场文书
通知范文怎么写
2015/04/16 职场文书
感恩的心主题班会
2015/08/12 职场文书
Pandas数据类型之category的用法
2021/06/28 Python