如何在 Python 中壓縮兩個列表列表?


可以使用 zip() 函式在 Python 中合併兩個列表列表。當處理表格資料或多維資料時,合併兩個列表列表尤其有用,因為它允許組合來自不同來源的相關資訊。zip() 函式是 Python 中一個強大的內建工具,它透過配對子列表中的對應元素並生成一個新列表來促進此過程。在本文中,我們將探討如何使用 zip() 函式在 Python 中壓縮兩個列表列表。

演算法

壓縮兩個列表列表的通用演算法如下:

  • 建立兩個列表列表,list1 和 list2,它們具有相同數量的子列表。

  • 初始化一個空列表 zipped_list,用於儲存壓縮結果。

  • 使用 zip() 函式迭代 list1 和 list2 中對應的子列表。

  • 對於每次迭代,再次使用 zip() 函式將子列表壓縮在一起。

  • 將壓縮的結果轉換為列表並將其新增到 zipped_list。

  • 對 list1 和 list2 中的所有子列表重複步驟 3-5。

  • 返回 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)]

這裡的引數如下:

  • list1list2 是我們要合併的兩個列表列表。

  • sublist1sublist2 表示當我們使用 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() 函式在到達較短列表的末尾時會停止壓縮。因此,如果您想壓縮所有子列表,則必須確保兩個列表具有相同數量的子列表。

更新於:2023年10月16日

2K+ 瀏覽量

啟動您的 職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.