Python基礎——推導式
阿新 • • 發佈:2019-01-12
推導式:
定義:推導式comprehensions(又稱解析式),是Python的一種獨有特性。推導式是可以從一個數據序列構建另一個新的資料序列。
一.列表推導式:
1.基本格式: 變數名 = [表示式 for 臨時變數 in 列表]
2.練習: 將lst中每一個元素進行平方後放入到一個新列表中
一般方法:
lst = [1,2,3,4]
new_lst = []
for i in lst:
num = i*i
new_lst.append(num)
print(new_lst)
輸出結果:[1,4,9,16]
列表推導式:
lst = [1,2,3,4]
new_lst = [i*i for i in lst]
print(new_lst)
輸出結果:[1,4,9,16]
求出lst 中是奇數的值,然後放入到一個新列表中
一般方法:
lst = [1,2,3,4,5,6,7,8]
new_lst = []
for i in lst:
if i %2==1:
new_lst.append(i)
print(new_lst)
輸出結果:[1,3,5,7]
列表推導式:
lst = [1,2,3,4,5,6,7,8] new_lst = [i for i in lst if i%2==1] print(new_lst)
輸出結果:[1,3,5,7]
將一個巢狀列表轉換成一個一維列表:
一般方法:
lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_lst = []
for lst1 in lst:
for i in lst1:
new_lst.append(i)
print(new_lst)
輸出結果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
列表推導式:
lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] new_lst = [i for lst1 in lst for i in lst1] print(new_lst)
輸出結果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
# 現在有一列表lst = [[1,2,3],[4,5,6],[7,8,9]] # 要求出1/4/7 和 1/5/9 元素,思考如何取出
一般方法取1,4,7
lst = [[1,2,3],[4,5,6],[7,8,9]]
new_lst = []
for i in range(len(lst)):
ret = lst[i][0] # 利用切片
new_lst.append(ret)
print(new_lst)
輸出結果:[1,4,7]
列表推導式:
lst = [[1,2,3],[4,5,6],[7,8,9]]
new_lst = [lst[i][0]for i in range(len(lst))]
print(new_lst)
輸出結果:[1,4,7]
一般方法取 1,5,9
lst = [[1,2,3],[4,5,6],[7,8,9]]
new_lst = []
for i in range(len(lst)):
ret = lst[i][i]
new_lst.append(ret)
print(new_lst)
輸出結果:[1,5,9]
列表推導式:
lst = [[1,2,3],[4,5,6],[7,8,9]]
new_lst = [lst[i][i]for i in range(len(lst))]
print(new_lst)
輸出結果:[1,5,9]
二.字典推導式:
1.格式:
變數名 = {表示式 for 臨時變數 可迭代內容}
2.練習:
將字典中的key 和value 進行對換
一般方式:
dic = {'k1':20,'k2':30}
new_dic = {}
for key,value in dic.items():
new_dic[value] =key
print(new_dic)
輸出結果: {20: 'k1', 30: 'k2'}
字典推導式:
dic = {'k1':20,'k2':30}
new_dic ={value:key for key,value in dic.items()}
print(new_dic)
輸出結果: {20: 'k1', 30: 'k2'}
三.集合推導式:
集合推導式跟列表推導式非常相似,唯一區別在於用{}代替[]
練習:
# 計算列表中 每個值得平方,自動去重 lst = [-2,3,-3,5] set1 = {i**2 for i in lst} print(set1)
輸出結果:{4,9,25}