本文旨在說明列表解析的用法
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,...