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 pdb调试方法分享
Jan 21 Python
python通过邮件服务器端口发送邮件的方法
Apr 30 Python
判断网页编码的方法python版
Aug 12 Python
Python实现迭代时使用索引的方法示例
Jun 05 Python
python实现飞机大战
Sep 11 Python
python3 拼接字符串的7种方法
Sep 12 Python
python使用Plotly绘图工具绘制气泡图
Apr 01 Python
Python利用matplotlib做图中图及次坐标轴的实例
Jul 08 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
Python 多线程共享变量的实现示例
Apr 17 Python
Python Opencv实现单目标检测的示例代码
Sep 08 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生成随机字符串(3种方法)
2015/09/25 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
js 居中漂浮广告
2010/03/21 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
2016/04/06 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
在Python中处理XML的教程
2015/04/29 Python
Java分治归并排序算法实例详解
2017/12/12 Python
python定向爬取淘宝商品价格
2018/02/27 Python
Jupyter中直接显示Matplotlib的图形方法
2018/05/24 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
开业庆典主持词
2014/03/21 职场文书
事业单位考核材料
2014/05/21 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
2016年教师节感言
2015/12/09 职场文书
小学家庭教育心得体会
2016/01/14 职场文书
你需要掌握的20个Python常用技巧
2022/02/28 Python