Python 小技巧之 zip()

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]]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值