Python中的zip()函数:如何对多个列表进行一一对应
发布时间:2023-07-03 13:54:45
Python中的zip()函数是一个非常有用的函数,它可以将多个列表或迭代对象一一对应起来。zip()函数会将传入的所有参数按照索引位置进行配对,返回一个由元组组成的新列表,每个元组包含来自各个参数的元素。这样可以方便地将多个列表或迭代对象进行整理、排序或执行其他操作。
使用zip()函数可以很方便地对多个列表进行一一对应,主要有以下几种情况:
1. 对两个列表进行一一对应:
a = [1, 2, 3] b = [4, 5, 6] c = list(zip(a, b)) print(c) # 输出:[(1, 4), (2, 5), (3, 6)]
2. 对多个列表进行一一对应:
a = [1, 2, 3] b = [4, 5, 6] c = [7, 8, 9] d = list(zip(a, b, c)) print(d) # 输出:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
3. 对列表和迭代器进行一一对应:
a = [1, 2, 3] b = iter(['a', 'b', 'c']) c = list(zip(a, b)) print(c) # 输出:[(1, 'a'), (2, 'b'), (3, 'c')]
4. 对不等长的列表进行一一对应:
a = [1, 2, 3] b = [4, 5] c = list(zip(a, b)) print(c) # 输出:[(1, 4), (2, 5)]
需要注意的是,zip()函数返回的是一个迭代器对象,如果需要得到一个列表,可以使用list()函数进行转换。另外,由于zip()函数以最短的序列长度作为基准进行对应,所以当两个列表长度不一致时,结果中会丢失超出最短列表长度的部分。
当对多个列表进行一一对应时,可以通过zip()函数返回的结果进行遍历操作,或者将元组元素进行解压赋值给多个变量。遍历操作可以通过for循环实现,解压赋值可以通过下划线占位符实现,示例如下:
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
for x, y, z in zip(a, b, c):
print(x, y, z) # 输出:1 4 7,2 5 8,3 6 9
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = list(zip(a, b))
for x, _ in c:
print(x) # 输出:1,2,3
总结来说,在Python中,zip()函数是对多个列表进行一一对应的常用操作,可以方便地将多个列表进行整理、排序或执行其他操作。其返回值是由元组组成的新列表,每个元组包含来自各个参数的元素。通过zip()函数的返回结果,可以进行遍历操作或解压赋值给多个变量。需要注意的是,当多个列表长度不一致时,结果中会丢失超出最短列表长度的部分。
