zoukankan      html  css  js  c++  java
  • python中zip()函数的用法

    zip函数的原型为:zip([iterable, …])

    参数iterable为可迭代的对象,并且可以有多个参数。该函数返回一个以元组为元素的列表,其中第 i 个元组包含每个参数序列的第 i 个元素。返回的列表长度被截断为最短的参数序列的长度。只有一个序列参数时,它返回一个1元组的列表。没有参数时,它返回一个空的列表。

     1 import numpy as np
     2 a=[1,2,3,4,5]
     3 b=(1,2,3,4,5)
     4 c=np.arange(5)
     5 d="zhang"
     6 zz=zip(a,b,c,d)
     7 print(zz)
     8 
     9 输出:
    10 [(1, 1, 0, 'z'), (2, 2, 1, 'h'), (3, 3, 2, 'a'), (4, 4, 3, 'n'), (5, 5, 4, 'g')]

    当没有参数的时候

    1 import numpy as np
    2 zz=zip()
    3 print(zz)
    4 
    5 输出:[]

    当只有一个参数的时候

    1 import numpy as np
    2 a=[1,2,3]
    3 zz=zip(a)
    4 print(zz)
    5 
    6 输出:[(1,), (2,), (3,)]

    当多个参数长度不同的时候(短板效应,自动截断)

    1 import numpy as np
    2 a=[1,2,3]
    3 b=[1,2,3,4]
    4 c=[1,2,3,4,5]
    5 zz=zip(a,b,c)
    6 print(zz)
    7 
    8 输出:[(1, 1, 1), (2, 2, 2), (3, 3, 3)]

    zip() 和 * 操作符一起操作可以用来 unzip 一个列表,看下面的代码:

     1 import numpy as np
     2 a=[1,2,3]
     3 b=[4,5,6]
     4 c=[7,8,9]
     5 zz=zip(a,b,c)
     6 print(zz)
     7 x,y,z=zip(*zz)
     8 print(x)
     9 print(y)
    10 print(z)
    11 
    12 输出:
    13 [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
    14 (1, 2, 3)
    15 (4, 5, 6)
    16 (7, 8, 9)

    注意:这里输出的每个都是元组,而不一定是原来的类型,但是值不会发生变化(除非原来的参数列表长度不一样,看下面的代码)

     1 import numpy as np
     2 a=[1,2,3]
     3 b=[4,5,6,7]
     4 c=[8,9,10,11,12]
     5 zz=zip(a,b,c)
     6 print(zz)
     7 
     8 x,y,z=zip(*zz)
     9 print(x)
    10 print(y)
    11 print(z)
    12 
    13 输出:
    14 [(1, 4, 8), (2, 5, 9), (3, 6, 10)]
    15 (1, 2, 3)
    16 (4, 5, 6)
    17 (8, 9, 10)

    unzip后的列表b和c的值都少了。

    原文连接:https://www.cnblogs.com/Thinker-Bob/articles/10592117.html

  • 相关阅读:
    redis中save和bgsave区别
    go语言标准库
    numpy 学习:数组改变形状、副本和view
    Python 开始:变量、操作符、print()和type()
    numpy 学习:数据类型和空值
    Python 数据类型:布尔类型和None
    numpy 学习:数组的拼接、堆叠和拆分
    numpy 学习:数组的查找
    Databricks 第12篇:Notebook 工作流
    numpy 学习:通用函数(包含数学函数)
  • 原文地址:https://www.cnblogs.com/LGJC1314/p/13408870.html
Copyright © 2011-2022 走看看