如何在Python中並行迭代兩個列表?
在Python中,使用**for迴圈**通常可以迭代單個數據結構,例如列表,但是如果我們需要並行迭代兩個或多個列表呢? 在這篇文章中,我們將看到並行迭代兩個或多個列表的不同方法。
透過使用range()函式,我們可以並行迭代兩個列表。讓我們看看下面的例子以及我們如何在python中迭代兩個列表。
使用for迴圈(如果兩個列表的長度相同)
假設兩個列表的長度相同,我們在這裡使用len()方法來獲取列表物件的長度。
示例
l1 = ['a', 'b', 'c', 'd', 'e']
l2 = [97, 98, 99, 100, 101]
length = len(l1) # Assuming both lists have same length
for i in range(length):
print(l1[i], l2[i])
輸出
a 97 b 98 c 99 d 100 e 101
如果兩個列表的長度不同
假設兩個列表長度不相等,我們將使用最小長度的範圍來迭代for迴圈。
示例
L1 = [1, 2, 3, 4, 5, 6, 7]
L2 = ['a', 'b', 'c']
length = len(L1) if len(L1)<=len(L2)else len(L2)
for i in range(length):
print(L1[i], L2[i])
輸出
1 a 2 b 3 c
列表物件l1、l2的長度分別為7和3,我們將最小長度3應用於range()函式,以便我們成功地並行迭代這兩個列表。注意:如果我們使用最大長度迭代for迴圈,則會引發IndexError。
使用zip()函式
zip()函式是一個python內建函式,它返回一個zip物件,該物件表示元組的迭代器。zip()函式執行到所有可迭代物件中最小的那個。
示例
l1 = [1, 2, 3, 4, 5, 6, 7]
l2 = ['a', 'b', 'c']
for ele_l1, ele_l2 in zip(l1, l2):
print(ele_l1, ele_l2)
輸出
1 a 2 b 3 c
與之前的示例一樣,zip()函式也迭代了for迴圈,直到兩個輸入可迭代物件中的最小長度。
使用itertools.zip_longest()方法
zip_longest()方法將多個可迭代物件作為引數,並返回一個迭代器。此函式的工作方式與zip()函式完全相同,但它基於最長的輸入可迭代物件。
語法
zip_longest( iterable1, iterable2, fillval)
示例
不匹配的元素預設填充為None,我們可以使用fillvalue引數指定填充值。在使用zip_longest()函式之前,我們需要首先匯入itertools模組。
import itertools
l1 = [1, 2, 3, 4, 5, 6, 7]
l2 = ['a', 'b', 'c']
for ele_l1, ele_l2 in itertools.zip_longest(l1,l2):
print(ele_l1, ele_l2)
輸出
1 a 2 b 3 c 4 None 5 None 6 None 7 None
示例
在這個例子中,我們成功地並行迭代了3個列表。
import itertools
l1 = [1, 2, 3, 4, 5, 6, 7]
l2 = ['a', 'b', 'c', 'd', 'e']
l3 = [10, 11, 12, 13]
for ele_l1, ele_l2, ele_l3 in itertools.zip_longest(l1, l2, l3):
print(ele_l1, ele_l2, ele_l3)
輸出
1 a 10 2 b 11 3 c 12 4 d 13 5 e None 6 None None 7 None None
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP