Python3列表解析之任意迭代注暗、表達式坛缕、條件和嵌套循環(huán)等特性詳解

161.jpg

概述

列表解析即利用現有的可迭代對象創(chuàng)建新的列表的Python語法,其過程完全可以用for循環(huán)復刻捆昏,但其解析效率比for循環(huán)快一些赚楚,缺點也很明顯,即不適合用于大數據迭代對象的解析骗卜,因為會占用大量內存宠页,導致MemoryError左胞。當然列表解析讓人愛不釋手的另一個原因就是簡潔。

列表解析基礎示例

解析列表

L = [1, 2, 3, 4, 5]
LL = [x ** 2 for x in L]
[print(x) for x in LL]

示例結果:

1
4
9
16
25

示例中我們完成了對原列表元素每個值進行平方的操作举户,每個元素的平方結果構成了新的列表

解析字典

D = {
    'one': 1,
    'two': 2,
    'three': 3,
    'four': 4,
    'five': 5
}
L = [D[key] ** 2 for key in D]
[print(x) for x in L]
1
4
9
16
25

示例中我們利用列表解析獲取字典的鍵值并對每個鍵值進行平方的操作烤宙,而每個鍵值的平方結果構成了新的列表

解析字符串

S = '12345'
L = [int(s) ** 2 for s in S]
[print(x) for x in L]

示例結果

1
4
9
16
25

示例中我們利用列表解析獲取字符串中單個字符串并且轉為整型并進行平方和的操作,而每個平方后的結果構成了新的列表

解析文件

with open('ex.txt') as f:
    lines = f.readlines()
    LINES = [line.strip().title() for line in lines]
    [print(line) for line in LINES]
i like python.
python makes me happy.
without python, without live.

示例中我們甚至可以利用列表解析讀取文件中的數據

表達式

列表解析中的表達式(expr)可以是簡單的或者復雜的表達式俭嘁,甚至是函數躺枕,若在前面的例子中我們利用列表解析逐一打印了列表中的數據。

def is_even(x):
    if x >= 0 and x % 2:
        return x, True
    else:
        return x, False


L = [1, 2, 3, 4, 5]
L_EVEN = [is_even(x) for x in L]
print(L_EVEN)

示例結果

[(1, True), (2, False), (3, True), (4, False), (5, True)]

條件列表解析

在列表解析中我們也可以直接加入條件限制解析出的元素

L = [1, 2, 3, 4, 5]
L_EVEN = [x for x in L if x >= 0 and x % 2]
[print(EVEN) for EVEN in L_EVEN]

示例結果:

1
3
5

多值列表解析

列表解析也支持對迭代對象的多值解析


D = {
    'one': 1,
    'two': 2,
    'three': 3,
    'four': 4,
    'five': 5
}
L = ['{} = {}'.format(key, value) for (key, value) in D.items()]
[print(x) for x in L]

示例結果

one = 1
two = 2
three = 3
four = 4
five = 5

嵌套循環(huán)

列表解析可以進行嵌套循環(huán)供填,原理和for中的嵌套循環(huán)一致

L1 = ['a', 'b', 'c']
L2 = ['1', '2', '3']
L = [x+y for x in L1 for y in L2]
[print(x) for x in L]

示例結果

a1
a2
a3
b1
b2
b3
c1
c2
c3
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末拐云,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子近她,更是在濱河造成了極大的恐慌叉瘩,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粘捎,死亡現場離奇詭異薇缅,居然都是意外死亡,警方通過查閱死者的電腦和手機攒磨,發(fā)現死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門泳桦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咧纠,你說我怎么就攤上這事蓬痒。” “怎么了漆羔?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵梧奢,是天一觀的道長。 經常有香客問我演痒,道長亲轨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任鸟顺,我火速辦了婚禮惦蚊,結果婚禮上,老公的妹妹穿的比我還像新娘讯嫂。我一直安慰自己蹦锋,他們只是感情好,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布欧芽。 她就那樣靜靜地躺著莉掂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪千扔。 梳的紋絲不亂的頭發(fā)上憎妙,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天库正,我揣著相機與錄音,去河邊找鬼厘唾。 笑死褥符,一個胖子當著我的面吹牛,可吹牛的內容都是我干的抚垃。 我是一名探鬼主播喷楣,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼讯柔!你這毒婦竟也來了抡蛙?” 一聲冷哼從身側響起护昧,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤魂迄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后惋耙,有當地人在樹林里發(fā)現了一具尸體捣炬,經...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年绽榛,在試婚紗的時候發(fā)現自己被綠了湿酸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡灭美,死狀恐怖推溃,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情届腐,我是刑警寧澤铁坎,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站犁苏,受9級特大地震影響硬萍,放射性物質發(fā)生泄漏。R本人自食惡果不足惜围详,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一朴乖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧助赞,春花似錦买羞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至婉徘,卻和暖如春漠嵌,著一層夾襖步出監(jiān)牢的瞬間咐汞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工儒鹿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留化撕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓约炎,卻偏偏與公主長得像植阴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子圾浅,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內容