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正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
Python写的Socks5协议代理服务器
Aug 06 Python
Python3.6安装及引入Requests库的实现方法
Jan 24 Python
python3 selenium 切换窗口的几种方法小结
May 21 Python
python实现按长宽比缩放图片
Jun 07 Python
Python实现求解一元二次方程的方法示例
Jun 20 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
Oct 09 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
Python检查 云备份进程是否正常运行代码实例
Aug 22 Python
python实现简单银行管理系统
Oct 25 Python
Python数组并集交集补集代码实例
Feb 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
js静态作用域的功能。
2006/12/25 Javascript
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
jquery分页插件pagination使用教程
2018/10/23 jQuery
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
python批量修改文件名的实现代码
2014/09/01 Python
python编写简单爬虫资料汇总
2016/03/22 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
Reformation官网:美国女装品牌
2018/09/14 全球购物
《挑山工》的教学反思
2014/02/16 职场文书
培训研修方案
2014/06/06 职场文书
客房服务员岗位职责
2015/02/09 职场文书
民主评议党员个人总结
2015/02/13 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android