zip()函数的功能是将可迭代对象(列表、元组等)中的参数转换成一个个元组对,生成一个元组组成的zip对象。如果想要输出查看生成的元组对,必须利用list()函数进行显示转换成列表,才能显示查看。例子如下:
1.输入参数是一个一维数组的情况:
In [1]: a = [1, 2, 3, 4, 5]
In [2]: zip_a = zip(a)
In [3]: zip_a
Out[3]: <zip at 0x7f5b6c4d7688>
In [4]: list(zip_a)
Out[4]: [(1,), (2,), (3,), (4,), (5,)]
2.输入参数是两个等长度数组的情况:
In [5]: a = [1, 2, 3, 4, 5]
In [6]: b = ['a', 'b', 'c', 'd', 'e']
In [7]: c = zip(a, b)
In [8]: c
Out[8]: <zip at 0x7f5b6c4efd48>
In [9]: list(c)
Out[9]: [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]
3.输入是两个不等长度数组的情况:
这种情况下,函数将取二者中的最短长度进行组合,输出元组对的数量与输入参数中长度最短数组的元素数量相同。
In [10]: a = [1, 2, 3, 4, 5]
In [11]: b = ['a', 'b', 'c']
In [12]: list(zip(a,b))
Out[12]: [(1, 'a'), (2, 'b'), (3, 'c')]
4.输入是二维的矩阵时,输出是一维情况下的正常推广:
In [18]: import numpy as np
In [19]: a = np.arange(9).reshape(3,3)
In [20]: a
Out[20]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [21]: b = np.array([['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']])
In [22]: b
Out[22]:
array([['a', 'b', 'c'],
['d', 'e', 'f'],
['g', 'h', 'i']], dtype='<U1')
In [23]: list(zip(a,b))
Out[23]:
[(array([0, 1, 2]), array(['a', 'b', 'c'], dtype='<U1')),
(array([3, 4, 5]), array(['d', 'e', 'f'], dtype='<U1')),
(array([6, 7, 8]), array(['g', 'h', 'i'], dtype='<U1'))]
同样当输入的两个二维矩阵维度不一致时,取各维度最小值进行组合:
In [24]: a = np.arange(9).reshape(3,3)
In [25]: a
Out[25]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [26]: b = np.array([['a', 'b', 'c'], ['d', 'e', 'f']])
In [27]: b
Out[27]:
array([['a', 'b', 'c'],
['d', 'e', 'f']], dtype='<U1')
In [28]: list(zip(a,b))
Out[28]:
[(array([0, 1, 2]), array(['a', 'b', 'c'], dtype='<U1')),
(array([3, 4, 5]), array(['d', 'e', 'f'], dtype='<U1'))]
网友评论