【Python】Python - 的List Comprehension。List Comprehension

 

List Comprehension

List comprehension 提供較短的語法,當您需要在現存的list 中建立新的list。

offers a shorter syntax when you want to create a new list based on the values of an existing list.

範例:

基於list中的水果,你可能只需要包含"a"開頭的水果名。

如果使用正常的for 迴圈來處理,程式碼可能會有判斷式在迴圈內,如下:

範例

fruits = ["apple""banana""cherry""kiwi""mango"]
newlist = []

for x in fruits:
  if "a" in x:
    newlist.append(x)

print(newlist)
上面輸出: ['apple', 'banana', 'mango']

如果使用 list comprehension 你只需要輸入1行程式碼就可完成上面的工作:

範例

fruits = ["apple""banana""cherry""kiwi""mango"]

newlist = [x for x in fruits if "a" in x]

print(newlist)

語法

newlist = [expression for item in iterable if condition == True]

回傳值會是新宣告在記憶體中的新的list,而舊的list的內容不會改變。


Condition

The condition如同是過濾器,只會加入 True 狀態的資料items。

範例

Only accept items that are not "apple":

newlist = [x for x in fruits if x != "apple"]
上面輸出: ['banana', 'cherry', 'kiwi', 'mango']

上面的 condition為 if x != "apple"  所以會列出所有的水果,除了名為apple的之外。

而 condition也可以不指定,如下所示:

範例

With no if statement:

newlist = [x for x in fruits]
上面輸出: ['apple, 'banana', 'cherry', 'kiwi', 'mango']

在List Comprehension使用迭代

可以迭代任何的 iterable object, 如list, tuple, set ...等等.

範例

你可使用 range() 方法來建立迭代:

newlist = [x for x in range(10)]
上面輸出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

下面範例與上面相同,但有判斷式:

範例

只列出小於 5的數列:

newlist = [x for x in range(10if x < 5]
上面輸出: [0, 1, 2, 3, 4]

Expression

The expression 在回傳時可自定義回傳的結果 。

範例

設定一個新的 list to 接收大寫的水果名稱:

newlist = [x.upper() for x in fruits]
上面輸出:['APPLE', 'BANANA', 'CHERRY', 'KIWI', 'MANGO'] 

你可以設定任何你想要的 outcome:

範例

將新的list內所有 items都填入 'hello':

newlist = ['hello' for x in fruits]
上面輸出: ['hello', 'hello', 'hello', 'hello', 'hello']

The expression 也可包含狀態, 不像過濾器, 但這也是個維護outcome的方法:

範例

如果遇到香蕉則回傳值改為橘子:

newlist = [x if x != "banana" else "orange" for x in fruits]
上面輸出: ['apple', 'orange', 'cherry', 'kiwi', 'mango']

上面範例的expression的說明如下:

如果不是banaba則回傳,如果是banana則回傳orange。







留言

這個網誌中的熱門文章

【多益】現點現做的英文怎麼說呢?

《Microsoft Word 應用》:圖片被文字蓋住解決方法,不可設定為固定行高

如何在Ubuntu系統上安裝Notepad ++ (Install Notepad++ On Ubuntu 16.04 / 17.10 / 18.04 / 20.04)