如何在 Python 中压缩两个列表列表?
可以使用 zip() 函数在 Python 中合并两个列表列表。在处理表格或多维数据时,合并两个列表列表特别有用,因为它允许合并来自不同来源的相关信息。zip() 函数是 Python 中一个强大的内置工具,它通过将子列表中的相应元素配对并生成新列表来简化此过程。在本文中,我们将探讨如何使用 zip() 函数在 Python 中压缩两个列表列表。
算法
压缩两个列表列表的通用算法如下:
创建两个列表列表,list1 和 list2,具有相同数量的子列表。
初始化一个空列表 zipped_list,以存储压缩结果。
使用 zip() 函数迭代 list1 和 list2 中的相应子列表。
对于每次迭代,再次使用 zip() 函数将子列表压缩在一起。
将压缩结果转换为列表并将其附加到 zipped_list。
对所有子列表重复步骤 3-5 list1 和 list2。
返回 zipped_list 作为最终结果。
方法 1:使用 Zip() 函数
语法
zip(*iterables)
此处,zip() 函数将多个可迭代对象作为参数,并返回包含每个可迭代对象元素的元组迭代器。
示例 1:压缩两个长度相等的列表
在下面的示例中,我们有两个列表,list1 和 list2,每个列表包含三个子列表。zip() 函数用于迭代 list1 和 list2 中的相应子列表。对于每次迭代,再次使用 zip() 函数将子列表压缩在一起。压缩后的结果被转换成列表并存储在zipped_list中。
list1 = [[1, 2], [3, 4], [5, 6]] list2 = [['a', 'b'], ['c', 'd'], ['e', 'f']] zipped_list = [list(zip(sublist1, sublist2)) for sublist1, sublist2 in zip(list1, list2)] print(zipped_list)
输出
[[(1, 'a'), (2, 'b')], [(3, 'c'), (4, 'd')], [(5, 'e'), (6, 'f')]]
示例 2:压缩两个不同长度的列表
在下面的示例中,我们有两个列表,list1 和 list2,但第二个列表只有两个子列表,而不是三个。zip() 函数将仅迭代两个列表共有的子列表数量。在这种情况下,它只会压缩两个列表中的前两个子列表。
list1 = [[1, 2], [3, 4], [5, 6]] list2 = [['a', 'b'], ['c', 'd']] zipped_list = [list(zip(sublist1, sublist2)) for sublist1, sublist2 in zip(list1, list2)] print(zipped_list)
输出
[[(1, 'a'), (2, 'b')], [(3, 'c'), (4, 'd')]]
示例 3:压缩两个空列表
在下面的示例中,list1 和 list2 都是空列表。由于没有要压缩的子列表,因此生成的 zipped_list 也将为空。
list1 = [] list2 = [] zipped_list = [list(zip(sublist1, sublist2)) for sublist1, sublist2 in zip(list1, list2)] print(zipped_list)
输出
[ ]
方法 2:使用列表推导和 zip() 方法
列表推导提供了一种基于现有列表或其他可迭代项创建列表的紧凑方法。通过在列表推导中加入 zip(),我们可以同时迭代多个列表中的相应元素,并生成具有所需合并结构的新列表。
语法
merged_list = [expression for sublist1, sublist2 in zip(list1, list2)]
此处使用的参数如下:
list1 和 list2 是我们要合并的两个列表。
sublist1 和 sublist2 表示使用 zip() 进行迭代时 list1 和 list2 中的相应子列表。
expression 是我们要应用于相应元素的操作或转换sublist1 和 sublist2 的合并元素,以在 merged_list 中创建合并元素。
示例
在下面的示例中,我们有两个列表,list1 和 list2,每个列表包含三个子列表。通过结合使用列表推导和 zip(),我们可以迭代相应的子列表并使用 + 运算符将它们合并在一起。生成的 merged_list 包含两个列表的组合元素。
list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] list2 = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']] merged_list = [sublist1 + sublist2 for sublist1, sublist2 in zip(list1, list2)] print(merged_list)
输出
[[1, 2, 3, 'a', 'b', 'c'], [4, 5, 6, 'd', 'e', 'f'], [7, 8, 9, 'g', 'h', 'i']]
结论
在本文中,我们讨论了如何使用 zip() 方法在 Python 中压缩两个列表列表。通过将 zip() 函数与列表推导结合使用,我们可以遍历相应的子列表并将它们压缩到新列表中。需要注意的是,zip() 函数在到达较短列表的末尾时会停止压缩。因此,如果要压缩所有列表,则必须确保两个列表具有相同数量的子列表。