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的源码来解析Python下的freeblock
May 11 Python
探究python中open函数的使用
Mar 01 Python
Python多进程同步简单实现代码
Apr 27 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
Python实现快速傅里叶变换的方法(FFT)
Jul 21 Python
查看python下OpenCV版本的方法
Aug 03 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
Python 切分数组实例解析
Nov 07 Python
python的help函数如何使用
Jun 11 Python
pandas DataFrame.shift()函数的具体使用
May 24 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
破解安装Pycharm的方法
2018/10/19 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
python django model联合主键的例子
2019/08/06 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
Python项目跨域问题解决方案
2020/06/22 Python
浅谈HTML5 & CSS3的新交互特性
2016/07/19 HTML / CSS
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
为什么需要版本控制
2016/10/28 面试题
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
机关门卫制度
2014/02/01 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
市场拓展计划书
2014/05/03 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
JavaScript原型链详解
2021/11/07 Javascript
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript