• python开发笔记之zip()函数用法详解


       今天分享一篇关于python下的zip()函数用法。

       zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素按顺序组合成一个tuple,每个tuple中包含的是原有序列中对应序号位置的元素,然后返回由这些tuples组成的list。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。在所有参数长度相同的情况下,zip()与map()类似,没有参数的情况下zip()返回一个空list。

       使用zip反转字典

         

    <span style="font-family:Microsoft YaHei;">>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    m.items()
    [('a', 1), ('c', 3), ('b', 2), ('d', 4)]
     zip(m.values(), m.keys())
    [(1, 'a'), (3, 'c'), (2, 'b'), (4, 'd')]
     mi = dict(zip(m.values(), m.keys()))
     mi
    {1: 'a', 2: 'b', 3: 'c', 4: 'd'}</span>
    

      

      利用*号操作符,可以将list unzip(解压成单独的序列),基本示例如官方文档。

    例:

    help(zip)
    Help on built-in function zip in module __builtin__:
    zip(...)
      zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
    

       其中 zip([seq1, ...])接受一系列可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。若传入参数的长度不等,则返回列表的长度和参数中长度最短的对象相同。

    x=[1,2,3]
     y=[1,2,3]
     z=(1,2,3)
    zip(x,y,z)
    [(1, 1, 1), (2, 2, 2), (3, 3, 3)]
    

      

    x=(1,2,3,4)
    y=[1,2,3]
    zip(x,y) #传入参数的长度不等,则返回列表的长度和参数中长度最短的对象相同
    [(1, 1), (2, 2), (3, 3)]
    

      

    x
    (1, 2, 3, 4)
    zip(x)
    [(1,), (2,), (3,), (4,)]
    

      

    zip()
    []
    

      zip()配合*号操作符,可以将已经zip过的列表对象解压,例如:

      

    x=[1,2,3]
     y=['a','b','c']
    z=[4,5,6]
    xyz=zip(x,y,z)
     xyz
    [(1, 'a', 4), (2, 'b', 5), (3, 'c', 6)]
    zip(*xyz)
    [(1, 2, 3), ('a', 'b', 'c'), (4, 5, 6)]
    

      

    x=[5,6,7]
    [x] #[x]生成一个列表的列表,它只有一个元素x
    [[5, 6, 7]]
    [x]*3 #[x] * 3生成一个列表的列表,它有3个元素,[x, x, x]
    [[5, 6, 7], [5, 6, 7], [5, 6, 7]]
    x
    [5, 6, 7]
     zip(*[x]*3) #zip(* [x] * 3)等价于zip(x, x, x)
    [(5, 5, 5), (6, 6, 6), (7, 7, 7)]
    

      

    name=['song','ping','python']
     age=[26,26,27]
     zip(name,age)
    [('song', 26), ('ping', 26), ('python', 27)]
     for n,a in zip(name,age):
    ...   print n,a
    ...
    song 26
    ping 26
    python 27

       好了以上就是我个人所了解的zip()函数用法,今天笔记到此为止了,有什么更好的建议和意见可以去我网站:圆柱模板  进行留言,谢谢!

  • 相关阅读:
    Spoj 2798 Qtree3
    [HAOI2015]树上操作
    Grass Planting
    [ZJOI2008] 树的统计Count
    Spoj375 Qtree--树链剖分
    [HNOI2012]永无乡
    雨天的尾巴
    temp
    线段树动态开点之逆序对
    线段树动态开点
  • 原文地址:https://www.cnblogs.com/68xi/p/8587885.html
Copyright © 2020-2023  润新知