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)

  • 相关阅读:
    非局部均值(NL-means)
    图像对比度的理解
    汇编语言之计算器设计
    基于DnCNN模型的图像去噪论文详解(Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising)
    P2024 [NOI2001]食物链(洛谷)
    P2256 一中校运会之百米跑(洛谷)
    P1037 产生数(洛谷)
    Java 换行和回车
    html 一些常用字符
    update
  • 原文地址:https://www.cnblogs.com/sweet521/p/3985606.html
Copyright © 2011-2022 走看看