新聞中心
經(jīng)過了幾天用循環(huán)語句寫代碼,很多小伙伴紛紛表示沒有初學的時候那樣好用了??此蒲h(huán)語句可以簡單的表述,但是如果完成復雜的結果就需要大量的代碼。對于列表的學習想必大家都涉及到了,不過之前學的都是用for循環(huán)去處理,今天我們試著避開for循環(huán),看看其他的代碼如何來創(chuàng)建列表。

先看下面的代碼:
data = [x**2 for x in range(0, 5)] # 此時data = [0, 1, 4, 9, 16]
如果不知道背后的語法規(guī)則,那么很難理解為什么可以在列表的方括號中寫一個“for”循環(huán)?實際上,這種語法稱為列表推導式,和lambda表達式類似,都是在代碼很短的情況下被使用。
列表推導式或者說列表解析式是一種非常簡潔的創(chuàng)建列表的方式。很多時候我們需要創(chuàng)建一個滿足特定要求的新列表,不得不用for循環(huán)來創(chuàng)建,而用列表推導式來表達只需要一行代碼即可。列表推導式另一個優(yōu)點是相比于for循環(huán)更高效,因為列表推導式在執(zhí)行時調(diào)用的是Python的底層C代碼,而for循環(huán)則是用Python代碼來執(zhí)行。
比如我們需要創(chuàng)建一個包含平方數(shù)的列表,用for循環(huán)實現(xiàn)方式如下:
squares = [] for i in range(10): squares.append(i**2) print(squares)
如果用列表推導式的話只需一行代碼即可實現(xiàn):
squares = [i**2 for i in range(10)]
列表推導式的語法結構可以分為幾部分:
0. “[]”,定義列表的中括號。
1. for循環(huán)初步定義列表。
2. 可選:在for循環(huán)后面可以使用if語句進行過濾。
3. 在for循環(huán)前定于列表的元素表達式,可以是任意的表達式??梢允莊or循環(huán)中的元素本身,也可以是元素進行運算后的結果,也可以是元素組成的元祖或者列表,可以是一個函數(shù),甚至可以是另一個列表解析式(嵌套列表解析式)。
4. 可選:在for循環(huán)后面可以再嵌套for循環(huán)。
觀察上面兩種創(chuàng)建列表的代碼,我們可以看出實現(xiàn)for循環(huán)的代碼是4行,而如果我們使用列表推導式,只用輕輕松松的一行代碼即可解決,小伙伴們還不快快行動嗎?
文章題目:創(chuàng)新互聯(lián)Python教程:如何避開for循環(huán)在python3代碼中創(chuàng)建列表?
分享鏈接:http://www.5511xx.com/article/cddpdhh.html


咨詢
建站咨詢
