Python zip与zip(*)的区别

*在打包和解包中都可以使用,不是所谓的打包不加*,解包加*。

zip就是功能简单的打包函数,基本用法:ZIP

但zip会和*操作联合使用:从而实现了解包操作,但其实这里的解包本质上也是打包,原因如下:

在加入*号后zip函数会进行两步,1:*操作,2:zip操作

  1. *操作:

       *可以放在函数的输入参数前,如myfunc(*args)形式,arg是个list,则此时*操作实现的功能是自动展开输入参数列表,如:args:List[arg1,arg2,arg3],经过“*”这个操作实际输入的myfunc的形式是myfunc(arg1,arg2,arg3)(当然前提函数参数列表这是这么定义的),这是一个很方便的小魔法操作。

2. zip操作

       zip函数的输入参数数量不定,可以接受1~m个参数,当是一个时则返回本身,当是多个 时返回打包结果。

3. 二者联合-》zip(*)

      不知道怎么解释,上例子吧。

     打包操作:

      zip(*[[1,2,3],[4,5,6]] )->zip([1,2,3],   [4,5,6] )->[(1, 4), (2, 5), (3, 6)]

     解包操作:

     zip(*[(1, 4), (2, 5), (3, 6)] ) ->zip((1, 4),    (2, 5),   (3, 6))->[[1,2,3], [4,5,6]]

    这下看懂了吧,*加压参数,zip打包,将输入的多个列表中同一位置的每个元素集成到一个元组中作为单个(single)打包结果(instance),返回一个instance列表。

如果没看懂,那我自己看好了。

参考:https://stackoverflow.com/questions/29139350/difference-between-ziplist-and-ziplist/29139418

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值