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 相关文章推荐
Python3.x和Python2.x的区别介绍
Feb 12 Python
python实现网页链接提取的方法分享
Feb 25 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
Oct 23 Python
python matplotlib画图实例代码分享
Dec 27 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
python Kmeans算法原理深入解析
Aug 23 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
基于Python实现2种反转链表方法代码实例
Jul 06 Python
python如何停止递归
Sep 09 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
Yii2语言国际化的配置教程
2018/08/19 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
js location.replace与location.reload的区别
2010/09/08 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
Python中使用支持向量机SVM实践
2017/12/27 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
如何基于python生成list的所有的子集
2019/11/11 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
Python接口开发实现步骤详解
2020/04/26 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
领导调研接待方案
2014/02/27 职场文书
活动总结格式范文
2014/04/26 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
使用Java去实现超市会员管理系统
2022/03/18 Java/Android
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL