Python 多列表中相同索引處的元素分組


在本教程中,我們將編寫一個程式,將來自不同列表的相同索引處的元素組合到一個列表中。這裡有一個限制條件。所有列表必須具有相同的長度。讓我們看一個例子來更清楚地理解它。

輸入

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

輸出

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

我們可以用不同的方法解決它。讓我們看看如何使用普通迴圈來解決。

  • 用列表初始化列表。
  • 初始化一個空列表。
  • 將變數 **index** 初始化為 0。
  • 迭代子列表長度次
    • 將一個空列表追加到上一個列表
    • 迭代列表長度次。
      • 將 **lists[current_index][index]** 追加到 **result[index]
  • 列印結果。

示例

 線上演示

# initializing the list
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# empty list
result = []
# variable to 0
index = 0
# iterating over the sub_list length (3) times
for i in range(len(lists[0])):
   # appending an empty sub_list
   result.append([])
   # iterating lists length (3) times
   for j in range(len(lists)):
      # adding the element to the result
      result[index].append(lists[j][index])
# moving to the next index
index += 1
# printing the result
print(result)

輸出

如果您執行以上程式碼,則將獲得以下結果。

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

我們可以使用 **zip** 函式毫不費力地解決它。**zip** 函式為您提供了我們想要的元組中的所有索引元素。讓我們看看程式碼。

示例

 線上演示

# initializing the list
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# using the zip and printing it
print(list(zip(*lists)))

輸出

如果您執行以上程式碼,則將獲得以下結果。

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

我們可以透過遍歷列表將元組轉換為列表。它可以以不同的方式完成。我們將使用另一個名為 **map** 的函式將所有元組轉換為列表。這是一行程式碼。

示例

 線上演示

# initializing the list
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# using the zip and printing it
print(list(map(list, zip(*lists))))

輸出

如果您執行以上程式碼,則將獲得以下結果。

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

我們使用 **map** 遍歷列表並將每個元組轉換為列表。您也可以使用迴圈來執行相同的操作。試試看。

結論

如果您在本教程中有任何疑問,請在評論部分中提及。

更新於: 2020年7月6日

599 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告
© . All rights reserved.