以下是一個用迴圈處理串列的範例,此範例會將 a 串列的每個元素平方,再存到 b 串列:
a = [9, 4, 8, 7] b = [] for v in a: b.append(v ** 2) print(b)而透過 list comprehension 的語法,我們可以很簡潔的寫為如下:
a = [9, 4, 8, 7] b = [v ** 2 for v in a] print(b)這個則是透過迴圈建立字典的範例:
a = {} for i in range(10): a[i] = i ** 2 print(a)我們也可以仿照 list comprehension 的語法(此時即為 dictionary comprehension),來將前一個範例改寫如下:
a = {i: i ** 2 for i in range(10)} print(a)List comprehension 對於巢狀迴圈,也跟原本有斷行時的的讀法一樣,最前面的是最外層,依此類推:
a = ['A', 'B', 'C'] b = ['X', 'Y', 'Z'] c1 = [] for vi in a: for vj in b: c1.append(vi + vj) print(c1) c2 = [vi + vj for vi in a for vj in b] print(c2)當然,也可以更進一步的跟條件判斷結合。其中,如果你需要根據條件來對原串列(或迴圈的「in」後面的任何一串東西)的每個值做不同的處理,則應該將 if-else 寫在新串列的內容部分;如果你的條件是用來篩選部分內容放到新串列,則應該寫在迴圈後面。
根據條件來對原串列的每個值做不同的處理的示範如下:
a = [9, 4, 8, 7] b1 = [] for v in a: if v > 7: b1.append(1) else: b1.append(0) print(b1) b2 = [] for v in a: b2.append(1 if v > 7 else 0) print(b2) b3 = [1 if v > 7 else 0 for v in a] print(b3)用條件來篩選部分內容放到新串列的示範如下:
a = [9, 4, 8, 7] b1 = [] for v in a: if v > 7: b1.append(1) print(b1) b2 = [1 for v in a if v > 7] print(b2)