Python中的“zip”函数:如何将多个列表按位置组合成元组的列表?
Python中的“zip”函数是一种非常有用的工具,可以将多个列表按位置组合成元组的列表。这可以方便地用于许多任务,例如将多个列表合并到一起,快速创建用于迭代的元组等等。
一个最简单的例子是如下所示:
a = [1,2,3] b = ['a','b','c'] c = list(zip(a,b)) print(c)
这将创建一个包含3个元组的列表,每个元组都是a和b中相应的元素。输出结果将是[(1, 'a'), (2, 'b'), (3, 'c')]。
这里zip()函数是将a和b作为参数传递的,每次从a和b中各取一位,然后将它们组成元组。这样也可以包含更多的列表,例如:
a = [1,2,3] b = ['a','b','c'] c = [True, False, False] d = list(zip(a, b, c)) print(d)
这将创建一个列表,其中包含三个元组,每个元组具有三个元素:
[(1, 'a', True), (2, 'b', False), (3, 'c', False)]
这样的功能可以非常简便地创造更复杂的数据结构,例如,矩阵以及其他多维数组。如果要创建一个由N个列表组成的矩阵,将每个列表作为zip()函数的参数传递即可。另外的列表可能也是一个元组。如下所示:
a = [(1,2), (3,4), (5,6)] b = [(2,3), (4,5), (6,7)] c = list(zip(a,b)) print(c)
这将创建一个包含3个元素的列表,每个元素都是一个元组,其中每个元组包含两个包含两个元组的元组。这可以很容易地扩展到任意N维度。这种技巧也可以很容易地在numpy和其他科学计算库中使用,以方便地组合多个数组。
在一些实际的例子中,zip()函数可能非常有用。例如,如果您有一些已排序的列表,并且想要在不干扰原始列表的情况下按排序顺序处理所有列表,那么这样做非常有用。
以下是一个简单的例子:
a = [1,3,4,7,9]
b = [2,3,5,6,8]
for x,y in zip(a,b):
print(x+y)
这个 zip 函数将会对两个列表按位加法运算,输出结果是 3 6 9 13 17。
Zip 函数也可以用于同时遍历多个列表,以进行一些有用的实际操作。例如,下面代码使用 zip 函数计算城市列表中每个城市的平均温度:
city = ['Beijing', 'Shanghai', 'Guangzhou']
temp = [[-2, 15, 9], [4, 20, 12], [15, 21, 19]]
avg_temp = []
for i in range(len(city)):
avg_temp.append(sum(temp[i])/len(temp[i]))
for city, avg in zip(city, avg_temp):
print(city, avg)
输出结果为:
Beijing 7.333333333333333
Shanghai 12.0
Guangzhou 18.333333333333332
这对于在大量城市中查找使用温度的概率很有用。通过zip函数,可以在同一循环中迭代两个或多个列表,而不需要使用多次for循环,从而提高代码的效率。
Zip函数可以方便地处理许多问题,提高代码的简洁性和可读性。在Python中,Zip函数不仅适用于列表,还可以使用任何序列类型,例如元组、字符串、集合等。十分灵活而且实用。
