Python的列表推导式
生活随笔
收集整理的這篇文章主要介紹了
Python的列表推导式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
列表推導式是Python基礎,好用,而又非常重要的功能,也是最受歡迎的Python特性之一,可以說掌握它是成為合格Python程序員的基本標準。本質上可以把列表推導式理解成一種集合了變換和篩選功能的函數,通過這個函數把一個列表轉換成另一個列表。注意是另一個新列表,原列表保持不變。看示例:(1)對列表中的每項元素進行立方運算(變換功能)a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [x ** 3 for x in a]
print(a)
print(b)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000](2)對列表中為偶數的元素進行立方運算(帶篩選條件的變換功能)a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [x ** 3 for x in a if x % 2 == 0]
print(b)[8, 64, 216, 512, 1000]? ? ? ?從結果上可以看出有篩選條件的話是先篩選再變換,即先篩掉不滿足條件的元素,再進行變換運算。可以同時加多個篩選條件,如對大于5的且是偶數的元素進行立方運算,示例如下:a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [x ** 3 for x in a if x % 2 == 0 if x > 5]
print(b)[216, 512, 1000](3)與zip結合? ? ? ?將a,b兩個列表中相對應得值組合起來,形成一個新列表。例如包含x坐標的列表與y坐標的列表形成相對應的點坐標[x, y]列表。a = [-1, -2, -3, -4, -5, -6, -7, -8, -9, -10]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
xy = [[x, y] for x, y in zip(a, b)]
print(xy)[[-1, 1], [-2, 2], [-3, 3], [-4, 4], [-5, 5], [-6, 6], [-7, 7], [-8, 8], [-9, 9], [-10, 10]](4)支持多層for循環? ? ? ?將一個嵌套列表轉換成一個一維列表。a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [j for i in a for j in i]
print(b)[1, 2, 3, 4, 5, 6, 7, 8, 9]? ? ? ?Python中還有字典推導式、集合推導式等,與列表推導式使用方式大致相同。? ? ? ?列表推導式的使用非常廣泛,從實際使用經驗來看,列表推導式使用的頻率是非常高的,也是相當好用的。而對于列表推導式的多層for循環,尤其是3層以上的或帶復雜篩選條件的,犧牲了較多的可讀性,直接用多個普通for循環方式實現就可以了,畢竟方便的實現功能是第一位的,多幾行代碼就多幾行吧。 與50位技術專家面對面20年技術見證,附贈技術全景圖
b = [x ** 3 for x in a]
print(a)
print(b)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000](2)對列表中為偶數的元素進行立方運算(帶篩選條件的變換功能)a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [x ** 3 for x in a if x % 2 == 0]
print(b)[8, 64, 216, 512, 1000]? ? ? ?從結果上可以看出有篩選條件的話是先篩選再變換,即先篩掉不滿足條件的元素,再進行變換運算。可以同時加多個篩選條件,如對大于5的且是偶數的元素進行立方運算,示例如下:a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [x ** 3 for x in a if x % 2 == 0 if x > 5]
print(b)[216, 512, 1000](3)與zip結合? ? ? ?將a,b兩個列表中相對應得值組合起來,形成一個新列表。例如包含x坐標的列表與y坐標的列表形成相對應的點坐標[x, y]列表。a = [-1, -2, -3, -4, -5, -6, -7, -8, -9, -10]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
xy = [[x, y] for x, y in zip(a, b)]
print(xy)[[-1, 1], [-2, 2], [-3, 3], [-4, 4], [-5, 5], [-6, 6], [-7, 7], [-8, 8], [-9, 9], [-10, 10]](4)支持多層for循環? ? ? ?將一個嵌套列表轉換成一個一維列表。a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [j for i in a for j in i]
print(b)[1, 2, 3, 4, 5, 6, 7, 8, 9]? ? ? ?Python中還有字典推導式、集合推導式等,與列表推導式使用方式大致相同。? ? ? ?列表推導式的使用非常廣泛,從實際使用經驗來看,列表推導式使用的頻率是非常高的,也是相當好用的。而對于列表推導式的多層for循環,尤其是3層以上的或帶復雜篩選條件的,犧牲了較多的可讀性,直接用多個普通for循環方式實現就可以了,畢竟方便的實現功能是第一位的,多幾行代碼就多幾行吧。 與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的Python的列表推导式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python几个简单好用的基础功能
- 下一篇: Python的序列切片