zoukankan      html  css  js  c++  java
  • pythpn的zip函数

    zip可接受多个序列作为参数,返回一个tuple列表。

    例1:没有参数

    >>> b = zip()

    >>> print b

    []

    例2:一个参数

    >>> a = (1,2,3)

    >>> b = zip(a)

    >>> print b

    [(1,), (2,), (3,)]

    例3:序列长度不同

    >>> a = (1,2,3)

    >>> c = (4,5,6,7)

    >>> b = zip(a,c)

    >>> print b

    [(1, 4), (2, 5), (3, 6)]

    例4: zip的多个序列操作

    >>> a = (1,2,3)

    >>> c = (4,5,6)

    >>> d = (7,8,9)

    >>> b = zip(a,c,d)

    >>> print b

    [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

    例5:

    >>> x = (1,2,3)

    >>> y = (4,5,6)

    >>> z = (7,8,9)

    >>> a = zip(x,y,z)

    >>> b = zip(*a)

    >>> print b

    [(1, 2, 3), (4, 5, 6), (7, 8, 9)]

    没有*号的结果如下:

    >>> b = zip(a)

    >>> print b

    [((1, 4, 7),), ((2, 5, 8),), ((3, 6, 9),)

    一般认为这是一个unzip的过程,它的运行机制是这样的:

    在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

    那么,zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))

    所以,运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

    注:在函数调用中使用*list/tuple的方式表示将list/tuple分开,作为位置参数传递给对应函数(前提是对应函数支持不定个数的位置参数)

    例6:

    >>> x = (1,2,3)

    >>> a = zip(*[x]*3)

    >>> print a

    [(1, 1, 1), (2, 2, 2), (3, 3, 3)]

    它的运行机制是这样的:

    [x]生成一个列表的列表,它只有一个元素x

    [x] * 3生成一个列表的列表,它有3个元素,[x, x, x]

    zip(* [x] * 3)的意思就明确了,zip(x, x, x)

  • 相关阅读:
    Maven--setting详解
    OAuth 2.0 的四种方式
    C#站点检测
    SonarQube--项目工程代码质量检测神奇
    在外租房子,切记九点
    在线关系图工具
    ppt thinkcell-Thinkcell: 一款强大的专业图表制作工具
    在线数据库关系图工具
    tsql获取sqlserver某个库下所有表
    windows10 iis浏览wcf报404.3错误
  • 原文地址:https://www.cnblogs.com/sweet521/p/3985606.html
Copyright © 2011-2022 走看看