新聞中心
經(jīng)過了幾天用循環(huán)語句寫代碼,很多小伙伴紛紛表示沒有初學(xué)的時候那樣好用了??此蒲h(huán)語句可以簡單的表述,但是如果完成復(fù)雜的結(jié)果就需要大量的代碼。對于列表的學(xué)習(xí)想必大家都涉及到了,不過之前學(xué)的都是用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)?實(shí)際上,這種語法稱為列表推導(dǎo)式,和lambda表達(dá)式類似,都是在代碼很短的情況下被使用。
列表推導(dǎo)式或者說列表解析式是一種非常簡潔的創(chuàng)建列表的方式。很多時候我們需要創(chuàng)建一個滿足特定要求的新列表,不得不用for循環(huán)來創(chuàng)建,而用列表推導(dǎo)式來表達(dá)只需要一行代碼即可。列表推導(dǎo)式另一個優(yōu)點(diǎn)是相比于for循環(huán)更高效,因?yàn)榱斜硗茖?dǎo)式在執(zhí)行時調(diào)用的是Python的底層C代碼,而for循環(huán)則是用Python代碼來執(zhí)行。
比如我們需要創(chuàng)建一個包含平方數(shù)的列表,用for循環(huán)實(shí)現(xiàn)方式如下:
squares = [] for i in range(10): squares.append(i**2) print(squares)
如果用列表推導(dǎo)式的話只需一行代碼即可實(shí)現(xiàn):
squares = [i**2 for i in range(10)]
列表推導(dǎo)式的語法結(jié)構(gòu)可以分為幾部分:
0. “[]”,定義列表的中括號。
1. for循環(huán)初步定義列表。
2. 可選:在for循環(huán)后面可以使用if語句進(jìn)行過濾。
3. 在for循環(huán)前定于列表的元素表達(dá)式,可以是任意的表達(dá)式。可以是for循環(huán)中的元素本身,也可以是元素進(jìn)行運(yùn)算后的結(jié)果,也可以是元素組成的元祖或者列表,可以是一個函數(shù),甚至可以是另一個列表解析式(嵌套列表解析式)。
4. 可選:在for循環(huán)后面可以再嵌套for循環(huán)。
觀察上面兩種創(chuàng)建列表的代碼,我們可以看出實(shí)現(xiàn)for循環(huán)的代碼是4行,而如果我們使用列表推導(dǎo)式,只用輕輕松松的一行代碼即可解決,小伙伴們還不快快行動嗎?
新聞標(biāo)題:創(chuàng)新互聯(lián)Python教程:如何避開for循環(huán)在python3代碼中創(chuàng)建列表?
文章URL:http://m.fisionsoft.com.cn/article/cddpdhh.html


咨詢
建站咨詢
