自學python 13 列表 集合 字典推導式

2021-10-05 12:17:53 字數 2450 閱讀 1883

格式:乙個表示式 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 制定位置插入元素,每次只能插入...