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中random模块用法实例分析
May 19 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
Aug 04 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
Python新手如何理解循环加载模块
May 29 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 Python
Python基础详解之描述符
Apr 28 Python
python批量创建变量并赋值操作
Jun 03 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 Python
Python中的 Set 与 dict
Mar 13 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 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
php中关于换行的实例写法
2019/09/26 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
JavaScript null和undefined区别分析
2009/10/14 Javascript
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
Python压缩和解压缩zip文件
2015/02/14 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
Python随机数函数代码实例解析
2020/02/09 Python
抽象方法、抽象类怎样声明
2014/10/25 面试题
师范毕业生自荐信
2013/10/17 职场文书
周鸿祎:教你写创业计划书
2013/12/30 职场文书
员工评语大全
2014/01/19 职场文书
自我反省检讨书
2014/01/23 职场文书
事业单位鉴定材料
2014/05/25 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
2014年司法所工作总结
2014/11/22 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书