我们有些时候需要把两个列表合成一个元组列表。比如把[x,y,z] [1,2,3]合并成[(x,1),(y,2),(z,3)]。如果不嫌麻烦,我们可以使用for循环的方法来实现:
list1 = ['x','y','z']
list2 = [1,2,3]
list_m = []
for i in range(len(list1)):
tuple_temp = (list1[i],list2[i])
list_m.append(tuple_temp)
print(list_m)
这样就用面向过程的方法实现了这个功能,运行结果如下:
[('x', 1), ('y', 2), ('z', 3)]
[Finished in 0.5s]
那么python中有没有这样的方法可以直接生成呢?答案是有的,这里就要用到zip(打包)函数,它是python的一个内置函数,用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果使用dict方法,还可以生成字典,这个字典的键为第一个列表中的元素,值为第二个列表中的元素。
list1 = ['x','y','z']
list2 = [1,2,3]
list_m = list(zip(list1,list2))
list_d = dict(zip(list1,list2))
print(list_m)
print(list_d)
结果如下:
[('x', 1), ('y', 2), ('z', 3)]
{'x': 1, 'y': 2, 'z': 3}
[Finished in 0.8s]
python用zip方法将两个单元素列表合并(打包)为一个元组(元素对)列表或者字典