現在我們有一個裝有名字的列表["tom", "jack", "bob", "nash"]
我們想要將列表中的名字首字母都大寫。按照之前學的知識,我們會用遍歷列表的方式
對列表中的每個名字進行首字母大寫的更改:
運行結果如下:
我們可以看到,我們獲得了一個新的列表,列表中的每個名字首字母都大寫。
那么,我們有沒有更為簡潔的方式實現這個功能呢?當然有,那就是列表推導式:
格式:
[表達式 for 變量 in 舊列表] or [表達式 for 變量 in 舊列表 if 條件 ]
我們用列表推導式來實現上面的功能:
運行結果如下:
我們可以看到,這樣的方式也獲得了一個新的列表,列表中的每個名字首字母大寫
了。
擴展1:列表推導式還可以加上條件判斷語句if
還是上面那個列表,我們獲得列表中名字大於等於4個字母的名字
我們在列表推導式的最后加上了一個判斷語句 if len(name) > =4 ,即遍歷出的名字大於或等於4個字母的,
放到name變量中組成一個新的列表。
運行結果如下:
我們可以看到,新列表中名字長度大於等於4個
擴展2:列表推導式還可以加上條件判斷語句if...else...
如上圖,salarys列表中有3個字典,每個字典包含了一個人的名字和薪水
通過判斷薪水是否大於10000,若大於則增加2%的薪水,若小於等於則增加5%的薪水
那么通過列表推導式,遍歷每個一個人(emploee),然后判斷emploee["salary"]是否大於10000,
條件為真則*(1+0.02),若為假則*(1+0.05)
運行結果如下圖:
我們獲得了一個新的列表,算出了每個人調整工資后的工資數
帶else的列表推導式格式:
[ 表達式a if 條件判斷 f else 表達式 b for 變量 in 列表]
若條件表達式if為真,則執行表達式a, 反之則執行條件表達式b
注意:列表推導式會得到一個新的列表,不會改變原來的列表