Python嵌套列表解析式(又称列表推导式)写法剖析与应用举例
生活随笔
收集整理的這篇文章主要介紹了
Python嵌套列表解析式(又称列表推导式)写法剖析与应用举例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#嵌套列表解析式又稱嵌套列表推導式,功能非常強大,但是初學者難以摸清其書寫規則。
#以下實例展示了嵌套列表解析的寫法。
#嵌套列表解析表達是的書寫規則是層層嵌套。
#嵌套層的一般形式為:for outter in inner。根據需要解析的嵌套層次深度,此一般形式可以從左到右接續寫若干個。
#嵌套層是從最左邊的for開始,從左往右,層次由深層到淺層。
#前提條件:所有從葉結點的到根節點被篩選出來的對象,必須具有可迭代性。
#所謂的葉結點,就是具有最終具體值的非列表性數據的結點。
#所謂的根節點,就是最頂層的具有嵌套子結構的結點。例如下例中的lv2,lv3,lv4,lv4_a
lv2=[range(10),range(10,20)] #lv2表示嵌套層級為2的列表
print([e for lv1 in lv2 for e in lv1])
#輸出結果為:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
print([e for lv1 in lv2 for e in lv1 if e%2==0])
#輸出結果為:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]lv3=[[range(10),range(10,20)],[range(20,30),range(30,40)]] #lv3表示嵌套層級為3的列表
print([e for lv2 in lv3 for lv1 in lv2 for e in lv1 if e%3==0])
#輸出結果為:[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39]#lv4表示嵌套層級為4的列表
lv4=[ [ [ [1,2],[3,4,5] ],[[6,7,8,9],[10,11,12,13,14] ] ],[ [ [15,16,17,18,19],[20,21,22,23] ],[ [24,25,26],[27] ] ] ]
print([e for lv3 in lv4 for lv2 in lv3 for lv1 in lv2 for e in lv1 if e%2==1])
#輸出結果為:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27]#lv4_a表示最大嵌套層級為4的列表,但是存在嵌套層級為3的葉結點。
#通過在嵌套的列表解析式中引入了條件
#此例的2個輸出語句分別實現了如下功能:
# (1)得到了第4層級上葉節點的數值。(不要輸出第3層級上的葉結點)。
# (2)得到了第3層級上葉節點的數值。(不要輸出第4層級上的葉結點)。
lv4_a =[ [ [11, [1,2],[3,4,5] ],[[6,7,8,9],22,[10,11,12,13,14] ] ],[ [ [15,16,17,18,19],33,[20,21,22,23] ],[ [24,25,26],44,[27] ] ] ]
print([e for lv3 in lv4_a for lv2 in lv3 for lv1 in lv2 if isinstance(lv1,list)==True for e in lv1])
#輸出結果為:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
print([e for lv2 in lv4_a for lv1 in lv2 for e in lv1 if not isinstance(e,list)])
#輸出結果為:[11, 22, 33, 44]
?
?
?
總結
以上是生活随笔為你收集整理的Python嵌套列表解析式(又称列表推导式)写法剖析与应用举例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArrayList的remove方法(重
- 下一篇: Python利用matplotlib.a