python小技巧 列表解析

2022-05-03 07:09:08 字數 1177 閱讀 7509

列表解析是用緊湊的方式來構造列表,起源於數學集合符號。一旦使用列表解析後,會經常使用它們來建立可讀性強、緊湊的**,而且這些語句執行速度也較快,效率較高。

列表解析至少需要包含兩個部分,但一般包含三個部分:【expression for-clause condition】

比如:要得到0~20的偶數列表,先用range來生成0~20的數字,然後檢查是否為偶數(i%2==0),最後將每個滿足條件的元素手機到列表中。

1 >>> [i for i in range(21) if i%2 ==0]

2 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

當然,並不僅限於數字,比如,找到單詞中所包含的母音列表

1 >>> word = "

solidarity

"2 >>> vowels = "

aeiou

"3 >>> [i for i in word if i in

vowels]

4 ['

o', '

i', '

a', '

i']

還可以從多個序列中,採用複雜條件來得到列表。例如,假設要生成數字對(笛卡爾座標對),x在0~3,y在0~4,且x>y。通過限制x為偶數可以進一步限制數字對。

1 >>> [(x,y) for x in range(3) for y in range(4) if x >y]

2 [(1, 0), (2, 0), (2, 1)]

3 >>> [(x,y) for x in range(3) for y in range(4) if x > y and x%2 ==0]

4 [(2, 0), (2, 1)]

列表解析還能用於轉換,比如,對於包含字母和數字的字串,希望得到只有數字的列表,需要過濾掉所有非數字的字元,並將字元數字轉換為整數。

1 >>> string="

john doe,874 main st.,east lansing,mi,48823

"2 >>> [int(c) for c in string if

c.isdigit()]

3 [8, 7, 4, 4, 8, 8, 2, 3]

列表解析的完整規則是表示式後跟for語句,然後跟多個if 或者for從句或者無。

python列表解析

列表解析是乙個列表對映出另乙個列表,它的基本形式是乙個方括號裡面包含乙個for語句對乙個iterable物件迭代 expression for target1 in iterable1 if condition1 for targetn in iterablen if conditionn 上面是列...

python 列表解析

m 1,2,3 4,5,6 7,8,9 col2 row 1 for row in m 獲取列表m的每個元素的第二個元素的值組成的列表 print col2 print row 1 1 for row in m 獲取列表m的每個元素的第二個元素 1的值組成的列表 print row 1 for ro...

Python列表解析

語法 1.expression for iter val in iterable 2.expression for iter val in iterable if cond expr l i 2 for i in range 1,11 print l 1,4,9,16,25,36,49,64,81,...