Python基礎 推導式

2021-10-02 14:58:43 字數 3111 閱讀 6719

什麼是推導式?

推導式,就是設定了一定條件的乙個python表示式,可以根據表示式自動推導生成對應的python物件。

通常情況下根據生成物件的不同,推導式區分為:

列表推導式 是利用其它列表建立新列表的一種方式,

工作原理類似for迴圈,即可對得到的元素進行轉換或者篩選。

列表推導式的基本格式:

變數名 =

[表示式 for 變數 in 列表] 或者

變數名 =

[表示式 for 變數 in 列表 if 條件]

執行流程:

遍歷出列表中的內容給變數,表示式根據變數值進行邏輯運算。

或者遍歷列表中的內容給變數,然後進行判斷,符合的值再給表示式。

練習1:將lst中每乙個元素進行平方後放到乙個新列表中

# 第一種方式:

lst =[1

,2,3

,4,5

,6,7

,8,9

]lst_new =

[i * i for i in lst]

print

(lst_new)

# [1, 4, 9, 16, 25, 36, 49, 64, 81]

# 第二種方式: 函式

defsquare

(num)

:return num * num

new_lst =

[square(i)

for i in lst]

print

(new_lst)

練習2:將乙個巢狀列表轉換成乙個一維列表。

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)

# 使用普通巢狀for迴圈

for lst1 in lst:

for i in lst1:

print

(i)

練習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]]# 使用for迴圈

# 1 4 7

for i in

range

(len

(lst)):

print

(lst[i][0

])# 1 5 9

for i in

range

(len

(lst)):

print

(lst[i]

[i])

# 使用列表推導式

lst1 =

[lst[i][0

]for i in

range

(len

(lst))]

print

(lst1)

lst2 =

[lst[i]

[i]for i in

range

(len

(lst))]

print

(lst2)

字典推導式就是列表推導式思想的延續,語法差不多,只不過產生的是字典

字典推導式:

變數名 =

練習:將字典中的keyvalue進行調換。

dic =

# 普通方式

new_dic =

for key, value in dic.items():

new_dic[value]

= key

print

(new_dic)

# # 字典推導式

new_dic =

print

(new_dic)

練習:

str1 =

("abc"

)str2 =

("123"

)dic =

print

(dic)

#

zip()用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個元組,然後返回由這些元組組成的列表。

如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同

集合推導式跟列表推導式相似,唯一區別在於用{}代替

l = [1, 1, 1, 2, 2, 2, 3, 4, 5, 6, 7]

set =

練習:計算列表中每個值的平方,自帶去重功能

squared =

print

(squared)

為什麼要用推導式?

推導式可以包含基本的處理條件和迴圈結構,並且可以讓迴圈結構進行巢狀完成複雜的操作,能在**的語法上對原來繁瑣的**進行優化,同時提高了**的可讀性,所以我們使用推導式。

什麼時候使用推導式?

如果要按照條件生成少量資料的列表/集合/字典,可以使用推導式進行操作,將資料生成後儲存在程式的變數中,但是一旦涉及到大量資料的操作~禁止使用推導式!

原因:推導式最終的結果是列表,列表底層的實現是順序表,順序表就是陣列,陣列中的資料一旦生成賦值給變數就會常駐記憶體,如果列表中儲存少量資料~對於程式的執行沒有什麼太大障礙,如果一旦資料過多就會導致記憶體大量消耗【按照條件使用推導式生成了1kw整數資料 -> 程式崩潰】

推導式:[核心:推導式的處理步驟]

python基礎 推導式

定義 推導式comprehensions 又稱解析式 是python的一種獨有特性。推導式是可以從乙個資料序列構建另乙個新的資料序列。推導式包括 1.列表 list 推導式 2.字典 dict 推導式 3.集合 set 推導式 1.列表推導式 列表推導式 list comprehension 是利用...

python基礎 列表推導式

先說點廢話 最開始我是通過一本書來入門python的 head first python 記得當時學完for迴圈後,書裡介紹了一種簡化 的方法,它可以通過一行 從乙個列表中取出資料然後追加到另乙個列表中,沒錯,就是列表推導式 不過當時學完後,一直沒想起來用,工作中遇到一些需要遍歷取數的情況,直接用f...

Python基礎 列表推導式

1.列表推導式書寫形式 表示式 for 變數 in 列表 或者 表示式 for 變數 in 列表 if 條件 2.舉例說明 usr bin python coding utf 8 li 1,2,3,4,5,6,7,8,9 print x 2 for x in li print x 2 for x i...