zip()
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]]