如何在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() 函数的完整文档。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注