zip在python3中,处于优化内存的考虑,只能访问一次!!!(python2中可以访问多次),童鞋们一定要注意,
zip()函数的定义:从参数中的多个迭代器取元素组合成一个新的迭代器;
返回: 返回一个zip对象,其内部元素为元组;可以转化为列表或元组;
传入参数: 元组、列表、字典等迭代器。
当zip()函数中只有一个参数时,zip(iterable)从iterable中依次取一个元组,组成一个元组。
在python 3.0中有个大坑,zip中的数据只能操作一次,内存就会释放,当下次
访问时就会报错,例如例子1中的输出操作
1、zip()函数单个参数
打印zip函数的返回类型
print(“zip()函数的返回类型:\n”, type(tuple1))#类型为
将zip对象转化为列表
当zip()函数有两个参数时:zip(a,b)zip()函数分别从a和b依次各取出一个元素组成
元组,再将依次组成的元组组合成一个新的迭代器–新的zip类型数据。
注意:要求a与b的维数相同,当两者具有相同的行数与列数时,正常组合对应位置元素即可;
当a与b的行数或列数不同时,取两者结构中最小的行数和列数,依照最小的行数和列数将
对应位置的元素进行组合;这时相当于调用itertools.zip_longest(*iterables)函数。
2、zip()函数有2个参数
行与列相同
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]]
矩阵点乘
矩阵相加,相减雷同
4、*zip的操作
就无法执行
5、*zip()函数
*zip()函数是zip()函数的逆过程,将zip对象变成原先组合前的数据。
原文链接:https://blog.csdn.net/junchengberry/article/details/80296133