Python 列表解析

2022-02-06 00:44:24 字數 1532 閱讀 5505

假設我們需要建立乙個列表為:[0,0,0,0,0,0,  0,0,0,  0](size=10)

顯然這樣寫0很費勁。所以有一種叫做列表解析的東西可以快速生成:

>>> [0 for i in range(10)]

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

#

還可以按序生成

>>> [i for i in range(10)]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

假設我們需要建立乙個列表:[0,2,0, 4, 0, 6, 0, 8, 0,  10] (size=10, 奇數為0,偶數不變)

>>> [i+1 if i%2 == 1 else 0 for i in range(10)]

[0, 2, 0, 4, 0, 6, 0, 8, 0, 10]

note: 當條件子句在for前時必須帶上else,此時else表示不符合if條件時列表元素的取值;當條件子句在for後時不能帶上else。不然會報錯!

>>> [i+1 if i%2 == 1 for i in range(10)]

file

"", line 1[i+1 if i%2 == 1 for i in range(10)] #

if在前面時,必須有else

^syntaxerror: invalid syntax

>>> [i+1 for i in range(10) if i%2 == 1 else

0]

file

"", line 1[i+1 for i in range(10) if i%2 == 1 else 0] #

if在後面時,不能有else

^syntaxerror: invalid syntax

假設我們需要根據建立乙個列表:[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)](可以看成(1, 2) 和 (1, 2, 3)的全排列)

>>> [(i, j) for i in [1, 2] for j in [1, 2, 3]]

[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)] #

perfect!

矩陣降維或者表量化:

>>> matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> array = [i for row in matrix for i in

row]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

notes: 注意兩個 for 的先後順序:高維在前!

假設我們想把列表:[(1, 201), (2, 202), (3, 205)],變成字典

>>> 

#perfect!

任何大神都是從小白當起! 

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,...