Python-推導(dǎo)式

? 推導(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é)到生成器再記錄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末问芬,一起剝皮案震驚了整個濱河市悦析,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌此衅,老刑警劉巖强戴,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異炕柔,居然都是意外死亡酌泰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門匕累,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人默伍,你說我怎么就攤上這事欢嘿。” “怎么了也糊?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵炼蹦,是天一觀的道長。 經(jīng)常有香客問我狸剃,道長掐隐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任钞馁,我火速辦了婚禮虑省,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘僧凰。我一直安慰自己探颈,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布训措。 她就那樣靜靜地躺著伪节,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绩鸣。 梳的紋絲不亂的頭發(fā)上怀大,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音呀闻,去河邊找鬼化借。 笑死,一個胖子當(dāng)著我的面吹牛总珠,可吹牛的內(nèi)容都是我干的屏鳍。 我是一名探鬼主播勘纯,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼钓瞭!你這毒婦竟也來了驳遵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤山涡,失蹤者是張志新(化名)和其女友劉穎堤结,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸭丛,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡竞穷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鳞溉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘾带。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖熟菲,靈堂內(nèi)的尸體忽然破棺而出看政,到底是詐尸還是另有隱情,我是刑警寧澤抄罕,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布允蚣,位于F島的核電站,受9級特大地震影響呆贿,放射性物質(zhì)發(fā)生泄漏嚷兔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一做入、第九天 我趴在偏房一處隱蔽的房頂上張望冒晰。 院中可真熱鬧,春花似錦母蛛、人聲如沸翩剪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽前弯。三九已至,卻和暖如春秫逝,著一層夾襖步出監(jiān)牢的瞬間恕出,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工违帆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浙巫,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像的畴,于是被迫代替她去往敵國和親渊抄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 推導(dǎo)式 推導(dǎo)式是從一個或者多個迭代器快速簡潔地創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的一種方法丧裁。它可以避免語法冗長的代碼 列表推導(dǎo)式 通過列...
    So_ProbuING閱讀 189評論 0 0
  • python的各種推導(dǎo)式(列表推導(dǎo)式护桦、字典推導(dǎo)式、集合推導(dǎo)式) 推導(dǎo)式comprehensions(又稱解析式)煎娇,...
    冬季戀歌1218閱讀 240評論 0 0
  • 編程規(guī)范 今天公司新出了一套Python編程規(guī)范2.0,一直覺得自己寫代碼路子有點野二庵,所以仔細(xì)的看了下。多數(shù)的內(nèi)容...
    清風(fēng)Python閱讀 501評論 0 3
  • 推導(dǎo)式 推導(dǎo)式是從一個或者多個迭代器快速簡潔地創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的一種方法缓呛。它可以 將循環(huán)和條件判斷結(jié)合催享,從而避免語法冗...
    b485c88ab697閱讀 909評論 0 0
  • 今天在網(wǎng)上看到一個面試題: 本來以為結(jié)果會是[0,2,4,6]輸出結(jié)果居然為:[6,6,6,6],也真是666.感...
    青銅搬磚工閱讀 2,204評論 0 2