行列互换函数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]