? 推導(dǎo)式,是Python里的一種獨有特性次屠,我也是第一次接觸這種概念园匹。說白了,推導(dǎo)式就是利用一個或者多個迭代器快速的創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的方法劫灶,可以結(jié)合條件判斷裸违,循環(huán)語句,從而不用像以前那樣寫很長的代碼浑此,整體代碼比較整潔累颂。
? 總共有四種推導(dǎo)式:
列表推導(dǎo)式
字典推導(dǎo)式
集合推導(dǎo)式
-
生成器推導(dǎo)式
其中生成器推導(dǎo)式其實和列表推導(dǎo)式很像,就是把[]換成了()凛俱。
列表推導(dǎo)式
1.基本形式:
[expression for item in iterable]
2.另一種形式:
[expression for item in iterable if condition]
解釋:
- expression :列表生成的值紊馏,也可以是表達(dá)式
- for item in itreable:將item傳入并迭代iterable
- if condition:條件表達(dá)式
3.舉例:
# 創(chuàng)建一個列表
my_list = [num for num in range(0,5)]
print(my_list)
# 創(chuàng)建一個列表,expression是表達(dá)式的情況
my_list1 = [num*2 for num in range(0,5)]
print(my_list1)
# 添加條件表達(dá)式
# 首先是生成列表:[1,2,3,4,5],然后判斷是否是偶數(shù)蒲犬,打印出[2,4]
my_list2 = [num+1 for num in range(0,5) if num%2 == 1]
print(my_list2)
字典推導(dǎo)式
1.基本形式:
{key_expression:value_expression for expression in iterable}
2.同樣有另一種形式:
{key_expression:value_expression for expression in iterabl if condition}
基本和列表推導(dǎo)式一樣朱监,不同之處是列表是中括號[],字典是大括號{}
3.舉例:
str_list = ["apple","orange","banana","pear"]
dic = {key:value for key,value in enumerate(str_list)}
# enumerate是python內(nèi)置函數(shù)原叮,可以將一個可迭代或可遍歷的對象組成一個索引序列赫编,能同時獲得索引和值
print(dic)
# 輸出結(jié)果:{0: 'apple', 1: 'orange', 2: 'banana', 3: 'pear'}
集合推導(dǎo)式
1.集合也有推導(dǎo)式,和列表奋隶,字典推導(dǎo)式類似:
{expression for expression in iterable} 或{expression for expression in iterable if condition}
2.舉例
str_list = str_list = ["apple","orange","banana","pear"]
the_set = {len(s) for s in str_list}
print(the_set)
# 輸出結(jié)果:{4,5,6} 一樣長度的只會算一次擂送,orange和banana都是6
生成器推導(dǎo)式
1.其實生成器推導(dǎo)式和列表差不多,只是由中括號[]變成了括號()唯欣,但這并不是元組推導(dǎo)式嘹吨,元組沒有推導(dǎo)式。
2.生成器推導(dǎo)式返回的是一個生成器對象境氢,生成器對象可以進(jìn)行迭代蟀拷,因為生成器對象也是一種可迭代對象碰纬。
3.關(guān)于生成器相關(guān)的留待學(xué)到生成器再記錄。