python3中zip()函数使用详解


Posted in Python onJune 29, 2018

zip在python3中,处于优化内存的考虑,只能访问一次!!!(python2中可以访问多次),童鞋们一定要注意,

* coding: utf-8 *

zip()函数的定义:从参数中的多个迭代器取元素组合成一个新的迭代器;
返回: 返回一个zip对象,其内部元素为元组;可以转化为列表或元组;
传入参数: 元组、列表、字典等迭代器。
当zip()函数中只有一个参数时,zip(iterable)从iterable中依次取一个元组,组成一个元组。

在python 3.0中有个大坑,zip中的数据只能操作一次,内存就会释放,当下次

访问时就会报错,例如例子1中的输出操作

1、zip()函数单个参数

print(‘=‘*10 + “zip()函数单个参数” + ‘=‘*10) 
list1 = [1, 2, 3, 4] 
tuple1 = zip(list1)

list2=list(tuple1)

打印zip函数的返回类型

print(“zip()函数的返回类型:\n”, type(tuple1))#类型为

将zip对象转化为列表

print(“zip对象转化为列表:\n”, list(tuple1))#值为[(1,), (2,), (3,), (4,)] 
print(“zip对象转化为列表:\n”, list(tuple1))#值为[]

print(“list2输出的列表1为:\n”,list2) 
print(“list2输出的列表2为:\n”,list2)

当zip()函数有两个参数时:zip(a,b)zip()函数分别从a和b依次各取出一个元素组成
元组,再将依次组成的元组组合成一个新的迭代器?新的zip类型数据。
注意:要求a与b的维数相同,当两者具有相同的行数与列数时,正常组合对应位置元素即可;
当a与b的行数或列数不同时,取两者结构中最小的行数和列数,依照最小的行数和列数将
对应位置的元素进行组合;这时相当于调用itertools.zip_longest(*iterables)函数。

2、zip()函数有2个参数

print(‘=‘*10 + “zip()函数有2个参数” + ‘=‘*10) 
m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
n = [[2, 2, 2], [3, 3, 3], [4, 4, 4]] 
p = [[2, 2, 2], [3, 3, 3]]

行与列相同

print(“行与列相同:\n”, list(zip(m, n)))

值为[([1, 2, 3], [2, 2, 2]), ([4, 5, 6], [3, 3, 3]), ([7, 8, 9], [4, 4, 4])]

行与列不同

print(“行与列不同:\n”, list(zip(m, p)))

值为[([1, 2, 3], [2, 2, 2]), ([4, 5, 6], [3, 3, 3])]

3、zip()应用,也可以使用for循环+列表推导式实现

矩阵相加减、点乘

m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
n = [[2, 2, 2], [3, 3, 3], [4, 4, 4]]

矩阵点乘

print(‘=‘*10 + “矩阵点乘” + ‘='10)#左右两端各有10个 
print([x*y for a, b in zip(m, n) for x, y in zip(a, b)])

[2, 4, 6, 12, 15, 18, 28, 32, 36]

矩阵相加,相减雷同

print(‘=‘*10 + “矩阵相加,相减” + ‘=‘*10) 
print([x+y for a, b in zip(m, n) for x, y in zip(a, b)])

[3, 4, 5, 7, 8, 9, 11, 12, 13]

4、*zip的操作

m5=[1,2,3] 
n5=[4,5,6] 
k5=[7,8,9] 
zip5=zip(m5,n5,k5)

print(“list(zip5):”,list(zip5))不能输出,否则zip(*zip5)

就无法执行

m6,n6,k6=zip(*zip5) 
print(“m6:”,m6)#m6: (1, 2, 3) 
print(“n6:”,n6)#n6: (4, 5, 6) 
print(“k6:”,k6)#k6: (7, 8, 9)

5、*zip()函数

*zip()函数是zip()函数的逆过程,将zip对象变成原先组合前的数据。

print(‘=‘*10 + “*zip()函数” + ‘=‘*10) 
m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
n = [[2, 2, 2], [3, 3, 3], [4, 4, 4]]

print(“zip(m, n)返回:\n”, zip(m, n)) # 
print(“*zip(m, n)返回:\n”, *zip(m, n))

*zip(m, n)返回:([1, 2, 3], [2, 2, 2]) ([4, 5, 6],[3, 3, 3]) ([7, 8, 9], [4, 4, 4])

print(“list(zip(m, n))返回:\n”, list(zip(m, n)))

list(zip(m, n))返回: [([1, 2, 3], [2, 2, 2]), ([4, 5, 6], [3, 3, 3]), ([7, 8, 9], [4, 4, 4])]

m2, n2 = zip(*zip(m, n))#先合到一块 
print(“m2:”,m2)#([1, 2, 3], [4, 5, 6], [7, 8, 9]) 
print(“n2:”,n2)#([2, 2, 2], [3, 3, 3], [4, 4, 4]) 
print(m == list(m2) and n == list(n2))#true
Python 相关文章推荐
python创建线程示例
May 06 Python
Python实现Tab自动补全和历史命令管理的方法
Mar 12 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
Python3实现的字典、列表和json对象互转功能示例
May 22 Python
python进阶之多线程对同一个全局变量的处理方法
Nov 09 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
用Python编写一个高效的端口扫描器的方法
Dec 20 Python
python3 实现函数写文件路径的正确方法
Nov 27 Python
Python-jenkins 获取job构建信息方式
May 12 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
Django显示可视化图表的实践
May 10 Python
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 Python
对python list 遍历删除的正确方法详解
Jun 29 #Python
通过Python模块filecmp 对文件比较的实现方法
Jun 29 #Python
Python之列表的插入&替换修改方法
Jun 28 #Python
python 寻找list中最大元素对应的索引方法
Jun 28 #Python
对numpy.append()里的axis的用法详解
Jun 28 #Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 #Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 #Python
You might like
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
二行代码解决全部网页木马
2008/03/28 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
js实现拖拽功能
2017/03/01 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
Python入门篇之面向对象
2014/10/20 Python
python使用PyGame模块播放声音的方法
2015/05/20 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
详解python metaclass(元类)
2020/08/13 Python
Python中return函数返回值实例用法
2020/11/19 Python
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
一些Unix笔试题和面试题
2012/09/25 面试题
老师给学生的表扬信
2014/01/17 职场文书
汇源肾宝广告词
2014/03/20 职场文书
综合内勤岗位职责
2014/04/14 职场文书
法学院毕业生求职信
2014/06/25 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
小学运动会报道稿
2015/07/22 职场文书
2016大一新生军训感言
2015/12/08 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android