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字符串替换示例
Apr 24 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
python中的tcp示例详解
Dec 09 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
详解Django CAS 解决方案
Oct 30 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
python获取百度热榜链接的实例方法
Aug 25 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
Python 实现进度条的六种方式
Jan 06 Python
 Python 中 logging 模块使用详情
Mar 03 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开发GUI
2006/10/09 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
python with statement 进行文件操作指南
2014/08/22 Python
python实现端口转发器的方法
2015/03/13 Python
详解Python3.1版本带来的核心变化
2015/04/07 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
2014年乡镇团委工作总结
2014/12/18 职场文书
盗窃案辩护词
2015/05/21 职场文书
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android