如何在python中压缩两个列表
通常,您可能对在 Python 中压缩(或“合并”)两个列表感兴趣。幸运的是,使用 zip() 函数可以轻松做到这一点。
本教程展示了此功能实际使用的几个示例。
示例 1:将两个长度相等的列表压缩为单个列表
以下语法显示了如何将两个长度相等的列表压缩为一个:
#define list a and list b a = ['a', 'b', 'c'] b = [1, 2, 3] #zip the two lists together into one list list( zip (a,b)) [('a', 1), ('b', 2), ('c', 3)]
示例 2:将两个长度相等的列表压缩到字典中
以下语法显示了如何将两个长度相等的列表压缩到字典中:
#define list of keys and list of values keys = ['a', 'b', 'c'] values = [1, 2, 3] #zip the two lists together into one dictionary dict( zip (keys, values)) {'a': 1, 'b': 2, 'c': 3}
示例 3:压缩两个长度不等的列表
如果两个列表的长度不等, zip() 将被截断为较短列表的长度:
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together into one list list( zip (a,b)) [('a', 1), ('b', 2), ('c', 3)]
如果您想防止 zip() 截断为最短列表的长度,您可以使用itertools库中的zip_longest()函数。
默认情况下,此函数会为缺失值填充“None”:
from itertools import zip_longest #define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together without truncating to length of shortest list list( zip_longest (a, b)) [('a', 1), ('b', 2), ('c', 3), ('d', None)]
但是,您可以使用fillvalue参数来指定要使用的不同填充值:
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together, using fill value of '0' list( zip_longest (a, b, fillvalue= 0 )) [('a', 1), ('b', 2), ('c', 3), ('d', 0)]
您可以在此处找到 zip_longest() 函数的完整文档。