Python學習小結 粗略列表解析

2021-09-14 03:59:05 字數 1427 閱讀 1201

本文旨在說明列表解析的用法

python是一門簡單高效的語言,因此**也可以變得簡單高效,主要目的的利於閱讀,方便書寫。因此引入了許多語法糖。列表解析就是個例子。

傳統方式的for迴圈:

arr=

for i in range(10):

# 迴圈新增0-9

arr=[i for i in range(10)]
以上的**與最上面的傳統方式有同等的效果,都是[0,1,2,3,4,5,6,7,8,9](已經過測試)

本文不分析原始碼實現(因為本人也不會啊),只負責教會各位怎麼看以及怎麼寫==。

接下來,讓我們分析一下上面出現的列表解析:arr=[i for i in range(10)]

arr顯然是乙個列表

列表中有乙個for迴圈:for i in range(10),這裡就是執行迴圈的地方

前面有乙個i,和for迴圈中的變數一樣,因此這就是迴圈體

總結:在列表解析中,需要新增的變數寫在前面,迴圈寫在後邊。

練習:用列表解析生成乙個二維陣列如:[,,,,]

因為我們不可能只會單純的迴圈,可能在迴圈中再加入迴圈,或者加入條件,因此列表解析需要更高階一點的用法了。

示例:

#條件判斷

arr=[i for i in range(10) if i is 5]#--> [5]

#迴圈巢狀:

arr=[j for i in range(2) for j in range(i)]#--> [0, 0, 1, 0, 1, 2]

接下來,分析一下結構:

arr = [ i for i in range(10) if i is 5 ]

(列表名)= [(代表列表元素的變數) (最外層的迴圈) (內部條件判斷)]

arr = [ j for i in range(2) for j in range(i)]

(列表名)= [(代表列表元素的變數) (最外層的迴圈) (內部迴圈) ]

大家看懂了嗎?

沒看懂?

那總結一下吧:

原**:

arr=

for i in range(10):

if i is 5:

for j in range(i):

縮排了三次

①for i in range(10)

②if i is 5

③for j in range(i)

列表中的元素:④j

列表解析:

arr=[j for i in range(10) if i is 5 for j in range(i)]
arr=[④ ① ② ③]

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