推導式 comprehensions(又稱解析式),是 python 的一種獨有特性。推導式是可以從一個數據序列構建另一個新的數據序列。
1.1列表推導式
語法:
- 變量名 = [表達式 for 變量 in 列表 for 變量 in xxx]
- 變量名 = [表達式 for 變量 in 列表 if 條件]
語義:
- 遍歷出列表中的內容給變量,表達式根據變量值進行邏輯運算。或者遍歷列表中的內容給變量,然后進行判斷,符合的值在給表達式。
練習1:快速創建一個包含元素1-10的列表
list1 = [i for i in range(1, 11)] print(list1)
練習2:快速創建一個包含1-10之間所有偶數的列表
list1 = [i for i in range(1, 11) if i % 2 == 0] print(list1)
練習3:現在有一列表 lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] ,求出 1/4/7 和 1/5/9元素,思考如何取出
# 使用列表推導式: lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] lst1 = [lst[i][0] for i in range(len(lst))] print(lst1) lst2 = [lst[i][i] for i in range(len(lst))] print(lst2)
面試題:求
a = [lambda x: x * i for i in range(3)] # 此處定義了一個裝了 3 個匿名函數函數的列表,尚未調用匿名函數, # 調用時全局變量 i 變為 2 相當於 a = [lambda x:x*2, lambda x:x*2, lambda x:x*2] print(type(a[0]), "---", a[0]) # -> x為函數形參,i為全局變量,程序執行到此處i變為2 print(a[0](2)) print(a[1](2)) print(a[2](2))
2字典推導式
- 字典推導式列表推導式思想的延續,語法差不多,只不過產生的是字典而已。
- 字典推導式格式:
- 變量名 = {....}
- 練習:將字典中的 key 和 value 進行對換。
2.2字典推導式 字典推導式列表推導式思想的延續,語法差不多,只不過產生的是字典而已。 字典推導式格式: 變量名 = {....} 練習:將字典中的 key 和 value 進行對換。
3集合推導式
- 集合推導式跟列表推導式非常相似,唯一區別在於用 { } 代替 [ ]
- 練習:
- 創建一個存儲10個偶數的集合
set1 = {x for x in range(10) if x % 2 == 0} print(set1)