Python3 对象组合zip()和回退方式*zip详解

系统 352 0

zip概述

zip即将多个可迭代对象组合为一个可迭代的对象,每次组合时都取出对应顺序的对象元素组合为元组,直到最少的对象中元素全部被组合,剩余的其他对象中未被组合的元素将被舍弃。

            
              keys 
              
                =
              
              
                [
              
              
                'one'
              
              
                ,
              
              
                'two'
              
              
                ,
              
              
                'three'
              
              
                ]
              
              
values 
              
                =
              
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ]
              
              
d 
              
                =
              
              
                zip
              
              
                (
              
              keys
              
                ,
              
               values
              
                )
              
              
                print
              
              
                (
              
              
                list
              
              
                (
              
              d
              
                )
              
              
                )
              
            
          

示例结果:

            
              [('one', 1), ('two', 2), ('three', 3)]

            
          

可以看到我们由 zip 模拟了一个类似字典的一一对应的元组迭代对象,并将其转化为 list 类型查看,当然我们可以利用获取迭代对象生成真正的键值字典:

            
              keys 
              
                =
              
              
                [
              
              
                'one'
              
              
                ,
              
              
                'two'
              
              
                ,
              
              
                'three'
              
              
                ]
              
              
values 
              
                =
              
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ]
              
              
d 
              
                =
              
              
                zip
              
              
                (
              
              keys
              
                ,
              
               values
              
                )
              
              

D 
              
                =
              
              
                {
              
              
                }
              
              
                for
              
               key
              
                ,
              
               value 
              
                in
              
               d
              
                :
              
              
                print
              
              
                (
              
              key
              
                ,
              
               value
              
                )
              
              
    D
              
                [
              
              key
              
                ]
              
              
                =
              
               value

              
                print
              
              
                (
              
              D
              
                )
              
            
          

示例结果:

            
              one 1
two 2
three 3
{'one': 1, 'two': 2, 'three': 3}

            
          

我们可以利用for循环迭代赋值给字典完成对应的键值映射,在Python3中我们还可以用一句话就可以完成 D = dict(zip(keys,values)) .

*zip

当我们想回退为迭代器组合之前的状态时,我们可以利用 * “解压”现在“压缩”过的新的迭代对象

            
              
keys 
              
                =
              
              
                [
              
              
                'one'
              
              
                ,
              
              
                'two'
              
              
                ,
              
              
                'three'
              
              
                ,
              
              
                'four'
              
              
                ]
              
              
values 
              
                =
              
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ]
              
              
d 
              
                =
              
              
                zip
              
              
                (
              
              keys
              
                ,
              
               values
              
                )
              
              
older 
              
                =
              
              
                zip
              
              
                (
              
              
                *
              
              d
              
                )
              
              
                print
              
              
                (
              
              
                list
              
              
                (
              
              older
              
                )
              
              
                )
              
            
          

“解压”结果:

            
              [('one', 'two', 'three'), (1, 2, 3)]

            
          

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请请扫描上面二维码支持博主1元、2元、5元等您想捐的金额吧,狠狠点击下面给点支持吧

发表我的评论
最新评论 总共0条评论