以下是一個用迴圈處理串列的範例,此範例會將 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 i in a:
	for j in b:
		c1.append(i + j)
print(c1)

c2 = [i + j for i in a for j 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)