python 列表解析式

2022-07-12 08:12:10 字數 1306 閱讀 1019

python的列表解析式只是為了解決已有問題提供新的語法

什麼是列表解析式?

列表解析式是將乙個列表轉換成另乙個列表的工具。在轉換過程中,可以指定元素必須符合一定的條件,才能新增至新的列表中,這樣每個元素都可以按需要進行轉換。

可以把列表解析式看作為結合了filter函式與map函式功能的語法糖

doubled_odds = map(lambda n: n * 2, filter(lambda n: n % 2 == 1, numbers))

doubled_odds = [n * 2 for n in numbers if n % 2 == 1]

每個列表解析式都可以重寫為for迴圈,但不是每個for迴圈都能重寫為列表解析式。

:::python

new_things =

for item in

old_things:

ifcondition_based_on(item):

"something with

" +item)

你可以將上面的for迴圈改寫成這樣的列表解析式:

:::python

new_things = ["

something with

" + item for item in old_things if condition_based_on(item)]

如果要在列表解析式中處理巢狀迴圈,請記住for迴圈子句的順序與我們原來for迴圈的順序是一致的

:::python

flattened =

for row in

matrix:

for n in

row:

下面這個列表解析式實現了相同的功能:

:::python

flattened = [n for row in matrix for n in row]

注意可讀性

如果較長的列表解析式寫成一行**,那麼閱讀起來就非常困難。

不過,還好python支援在括號和花括號之間斷行。

列表解析式 list comprehension

斷行前:

:::python

doubled_odds = [n * 2 for n in numbers if n % 2 == 1]

斷行後:

:::python

doubled_odds =[

n * 2

for n in

numbers

if n % 2 == 1]

參考

Python列表解析式

有時候,乙個程式設計設計模式使用得十分普遍,甚至會逐步形成自己獨特的語法。python程式語言中的列表解析式 list comprehension 就是這類語法糖 syntactic sugar 的絕佳代表。python中的 列表解析式 是個偉大的發明,但是要掌握好這個語法則有些難,因為它們並是用來...

Python列表解析(列表推導式)

列表解析 用來動態地建立列表 expr for iter var in iterable if cond expr 例子一 map lambda x x 2,range 6 0,1,4,9,16,25 x 2 for x in range 6 0,1,4,9,16,25 列表解析式可以取代內建的ma...

Python學習筆記 列表解析式

python列表解析式是個很神奇的東西!在列表中運用了for迴圈,或者for迴圈加上if 等條件判斷語句,能夠很明顯的簡化 量。1.單個for迴圈 a i for i in range 1,4 a 1,2,3 2.兩個for迴圈 a x,y for x in range 1,4 for y in r...