zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包乘一个个元组,然后返回由这些元组组成的对象,好处是可以节约内存
如果各个迭代器的元素个数不同,则返回元组长度与最短对象相同,利用 * 操作符,可以将元组解压为列表
语法:
zip([iterable, ...])
参数说明:
iterable ----- 一个或者多个迭代器
返回值:
一个对象
实例:
>>> x = [1,2,3,4,5,6] >>> y = [0,1,0,0,1,1] >>> zipped_data = list(zip(x,y)) # 转化为列表 >>>> zipped_data [(1, 0), (2, 1), (3, 0), (4, 0), (5, 1), (6, 1)]
应用:
在机器学习中,将样本和标签等一一对应,并可以使用 random.shuffle() 函数实现打乱数据顺序的效果
>>> import random >>>> random.shuffle(zipped_data) >>>> zipped_data [(4, 0), (3, 0), (5, 1), (1, 0), (2, 1), (6, 1)]
与 zip() 相反,zip(*) 可理解为解压,返回二维矩阵式
zip(*) 反向解压,map() 逐项转换类型,list() 做最后转换
>>> new_zipped_data = list(map(list, zip(*zipped_data))) >>> new_x, new_y = new_zipped_data[0], new_zipped_data[1] >>>> new_x [4, 3, 5, 1, 2, 6] >>> new_y [0, 0, 1, 0, 1, 1] >>> new_zipped_data [[4, 3, 5, 1, 2, 6], [0, 0, 1, 0, 1, 1]]



