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代码做configure文件
Jul 20 Python
基于Python Shell获取hostname和fqdn释疑
Jan 25 Python
用Python编写简单的微博爬虫
Mar 04 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
Python实现DDos攻击实例详解
Feb 02 Python
详解Python Qt的窗体开发的基本操作
Jul 14 Python
python3在同一行内输入n个数并用列表保存的例子
Jul 20 Python
tensorflow 环境变量设置方式
Feb 06 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
Apr 22 Python
Python使用windows设置定时执行脚本
Nov 12 Python
python入门学习关于for else的特殊特性讲解
Nov 20 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常用代码
2006/11/23 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
2019/01/28 PHP
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
Python基类函数的重载与调用实例分析
2015/01/12 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
如何理解Python中的变量
2020/06/01 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
python集合能干吗
2020/07/19 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
天猫精选:上天猫,就够了
2016/09/21 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
新年团拜会主持词
2014/04/02 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书