行列互换函数zip()

行列互换函数zip()

原型:zip(*iterables)

从每一个迭代器中汇集元素,生成新的迭代器。

返回一个元组(tuple)迭代器,它的第i个元组包含了第i个来自参数队列或迭代器的元素。迭代器停止条件是当最短的输入迭代器用尽。只使用一个可迭代参数,它返回一个1-元组的迭代器。没有参数,它返回一个空的迭代器。

在zip()中使用*操作符,能解开一个列表:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zip(x, y))
>>> x == list(x2) and y == list(y2)
True

解包参数列表

当一个参数已经在一个列表或元组中时,但是需要为程序分别掉用单独的位置参数,这时我们就需要反转状态。例如,内建函数range()希望有单独的开始和结束参数,但是我们只有一个两个元素的列表或元组,这时就可以使用*操作符:

>>> list(range(3, 6))            # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> list(range(*args))            # call with arguments unpacked from a list
[3, 4, 5]

发表回复