1. 程式人生 > >Python基礎——推導式

Python基礎——推導式

推導式:

定義:推導式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}