格式:乙個表示式 for 變數 in [舊列表]
或者 [表示式 for 變數 in 舊列表 if 條件]
names =
["adsdsad"
,"bbabasss"
,"asdasdas"
,"1wqewee"
,"sad"
,"21d"
]result =
[name.capitalize(
)for name in names if
len(name)
>3]
print
(result)
# ['adsdsad', 'bbabasss', 'asdasdas', '1wqewee']
這樣寫可以起到化簡的作用。可以這樣理解,name是待放進新列表的元素,用for迴圈遍歷舊列表,如果遍歷的符合if後面的條件,就把它放入列表中,也可以先對name進行操作再放入列表中,例如上面**中,name.capitalize(),就是將name轉換成大寫之後再放入列表中。
再舉乙個例子:
newlist =
[i for i in
range(1
,101
)if i %3==
0]print
(newlist)
# [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33,
# 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66,
# 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
列印 0 ~ 5 和 0 ~ 10 的奇數,構成的列表。
就是[(0,1),(0,3),(0,5),(0,7),(0,9),(2,1),(2.3) … …]
newlist =
[(x,y)
for x in
range(5
)if x %2==
0for y in
range(10
)if y %2!=
0]print
(newlist)
# [(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9), (4, 1), (4, 3), (4, 5), (4, 7), (4, 9)]
實現這個功能的時候用了兩層for迴圈,這裡的for迴圈相當於巢狀於 if 中的,這裡的if不是必須的,如果不加if的話就沒有判斷直接執行後面的語句,一定要注意語法格式,這裡的語法格式有點亂。
利用 if else 對篩選的結果進行更改的列表推導式。
dict1 =
dict2 =
dict3 =
dict4 =
list1 =
[dict1,dict2,dict3,dict4]
# 如果薪資大於5000加200,低於5000加500。
newlist =
[employee[
"salary"]+
200if employee[
"salary"
]>
5000
else employee[
"salary"]+
500for employee in list1]
print
(newlist)
# 上面的**可以參考三目運算子來理解,滿足if後執行的語句 if else 滿足else執行的語句。
# employee["salary"] + 200 if employee["salary"] > 5000 else employee["salary"] + 500 這個可以看成乙個整體,作為判斷條件。
# newlist裡的是employee["salary"] + 錢數,所以列表中全部都是錢數。
# [5500, 5500, 5000, 3500]
list1 =[1
,2,3
,4,2
,6,7
,3,7
,8,2
,3]set1 =
print
(set1)
#
集合推導式和列表推導式的語法是一樣的,只是結果滿足集合的特性,並且順序變了,但是沒影響。因為集合具有無序性。
dict1 =
dict2 =
print
(dict2)
#
字典推導式和集合推導式一樣,用大括號包在外面,所以為了區分使用時必須要 key:value 作為返回的型別,這裡我把key和value在結果中換了一下位置,這樣dict1中的 3:『c』 和 4:『c』 會變成 『c』:3,『c』:4 ,我們可以觀察到結果中只保留了』c』:4。 Python自學筆記 11 列表推導
用到函式的乙個常見操作是將其用於乙個列表的所有項,並使用結果來建立乙個新的列表。如果我們要生成list 1,2,3,4,5,6,7,8,9,10 能用哪種方法呢?當然最基礎的方法可以參見列表 上 但是,這種只適合項比較少的一些場景,現在我們要生成1到999的列表怎麼辦呢?list range 1,1...
python 自學筆記(四) 列表
有幾天沒有更新部落格了,畢竟是自學,最近事情確實比較多,有時候想學的時候反而沒時間,到有時間的時候反而不想學。以後得想辦法改掉這個缺點,只要有時間就要學習自己想學的東西,希望自學的同學能和我共同交流,其實我自學的道路非常孤獨,我也希望在學習的道路有個朋友。今天學習一下 python的列表,以後可能還...
python自學(三) 列表和邏輯判斷
二 邏輯判斷 三 迴圈 四 dict和set 一 列表和tuple 1.1 列表 陣列和其他語言的陣列基本類似,表示乙個有序的資料集合 1.data 向列表追加資料元素 2.pop index index為空時,預設刪除最後一項 3.insert index,data 制定位置插入元素,每次只能插入...