6-10 list comprehension

當我們要建立一個清單時,可以將其內容一個一個寫在中括號之內。如果清單的內容很多時,用一一列舉的寫法不僅容易出錯,有時也不太實際。例如,想建一個內容為1 ~ 1000的清單,採用列舉法實在強人所難。此時如果用清單推導(list comprehension)的方式表示,可以輕鬆的完成此事。如以下的示範:

程式:
a = [i+1 for i in range(1000)]

print(a)
執行結果:
[1, 2, 3, 4, 5, ..., 999, 1000]

在以上的例子中,清單的內容宣告為i+1,但是i並未說明是什麼?因此在for指令之後,就說明irange(1000)中的每一個值,也就是0 ~ 999的值。

再看以下的例子:

在以上的程式,ord('A')是指A的內碼,其值為65,而BCD、...依序為666768....,在程式中chr()將內碼再轉回字元。因此設計讓i從0~25遞增,再加上65的基底,就變成ABCD、 ... 、YZ

再看以下例子:

這個例子在list comprehension中加入if指令,先用for指令說明i是什麼,再用if指令說明i的條件。

自主練習

  1. 建立一個清單,內容是小寫英文'a' ~ 'z'。

  2. 建立一個清單,內容是2的1次方 ~ 2的10次方。

  3. 建立一個清單,內容是1~100中所有除以5的餘數為3的數。

Last updated