Python中的zip()函数用法实例
Python中的zip()函数是一种将两个或多个列表或其他可迭代对象中的元素按照相同的索引组合起来的函数。它返回一个由元组组成的迭代器对象,其中每个元组由输入可迭代对象中相同索引位置的元素组成。这篇文章将介绍zip()函数的用法,并给出一些示例。
用法介绍
zip()函数的基本用法很简单。它可以接受一个或多个可迭代对象作为参数,将它们按照相同的索引位置组合起来,生成一个由元组组成的迭代器对象。例如:
>>> a = [1, 2, 3] >>> b = ['a', 'b', 'c'] >>> result = zip(a, b) >>> print(list(result)) [(1, 'a'), (2, 'b'), (3, 'c')]
在这个例子中,我们定义了两个列表a和b,分别包含了整数和字符串。然后,我们调用了zip(a, b)函数将它们组合起来,并将结果转化为一个列表。
需要注意的是,zip()函数返回的是一个迭代器对象。如果我们直接打印这个对象,只能得到对象的内存地址:
>>> print(zip(a, b)) <zip object at 0x102a87f80>
因此,我们需要使用list()函数将这个迭代器对象转化为列表才能查看它的内容。
zip()函数可以接受任意数量的可迭代对象作为参数。如果它们长度不同,那么函数将按照最短的长度进行组合:
>>> a = [1, 2, 3, 4, 5] >>> b = ['a', 'b', 'c'] >>> result = zip(a, b) >>> print(list(result)) [(1, 'a'), (2, 'b'), (3, 'c')]
在这个例子中,我们定义了两个列表a和b,一个包含了5个整数,一个包含了3个字符串。然后,我们调用了zip(a, b)函数将它们组合起来。由于a列表的长度比b列表长,zip()函数只会组合前3个元素。
示例
下面是一些使用zip()函数的示例。
1. 计算两个列表的元素之和
>>> a = [1, 2, 3] >>> b = [4, 5, 6] >>> result = [x+y for x,y in zip(a,b)] >>> print(result) [5, 7, 9]
在这个例子中,我们定义了两个列表a和b,分别包含了整数。然后,我们调用了zip(a, b)函数将它们组合起来,生成一个由元组组成的迭代器对象。使用一个列表推导式遍历这个元组列表,将每个元组中的两个数相加,得到一个新的列表result。
2. 转置矩阵
>>> matrix = [ ... [1, 2, 3], ... [4, 5, 6], ... [7, 8, 9] ... ] >>> result = [list(x) for x in zip(*matrix)] >>> print(result) [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
在这个例子中,我们定义了一个3x3的矩阵matrix。我们想要将它转置成一个新的矩阵。我们首先使用*运算符将矩阵中的每一行作为一个参数传递给zip()函数,然后将返回的迭代器对象转化为一个列表。这个列表的每个元素都是一个元组,包含了矩阵中每一列的元素。然后我们再次使用列表推导式,遍历这个元组列表,将每个元组转化为一个新的列表。
