zip
函数用于将多个可迭代对象(如列表、元组、字符串等)中的元素配对。当你使用zip(X, K)
时,它会生成一个迭代器,这个迭代器的元素是来自X
和K
的元素的元组。
- 参数:
zip
函数接受两个或多个可迭代对象作为参数。 - 返回值:它返回一个迭代器,迭代器中的每个元素都是一个元组,元组中包含来自每个可迭代对象的对应位置的元素。
- 长度:生成的迭代器的长度等于输入的可迭代对象中最短的一个的长度。如果可迭代对象的长度不同,
zip
会停止在最短的可迭代对象结束的地方。
示例1:一维列表
X = [1, 2, 3]
K = ['a', 'b', 'c']
print(list(zip(X, K)))
使用zip之后将会生成一个迭代器,也就是一次返回一个元组(多个对象),因此打印的时候需要用for loop 或者用list()输出
[(1, 'a'), (2, 'b'), (3, 'c')]
示例2:三维数组
X = torch.tensor([[[0, 1, 2], [3, 4, 5], [6, 7, 8]],
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]) # 2x3x3
K = torch.tensor([[[0, 1], [2, 3]], [[1, 2], [3, 4]]]) # 2x2x2
输出为 [ ( X[0], K[0] ),( X[1], K[1] ) ]
X[0]
和 K[0]
是第一个batch的张量,X[1]
和 K[1]
是第二个batch的张量。每个张量的形状如下:
X[0]
和X[1]
的形状是3x3
K[0]
和K[1]
的形状是2x2
tensor([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
tensor([[0, 1],
[2, 3]])
tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
tensor([[1, 2],
[3, 4]])