中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

迭代列表不要For循環(huán),這是Python列表推導(dǎo)式最基本的概念

2019-09-19    來源:raincent

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

如果你還在使用 For 循環(huán)迭代列表,那么你需要了解了解列表推導(dǎo)式,看看它的基本概念都是什么。

列表解析式(List comprehension)或者稱為列表推導(dǎo)式,是 Python 中非常強(qiáng)大和優(yōu)雅的方法。它可以基于現(xiàn)有的列表做一些操作,從而快速創(chuàng)建新列表。在我們第一次見到列表推導(dǎo)式時,可能會感覺這種方法非常炫酷,因此寫列表推導(dǎo)式是非常爽的一件事。

 

 

如果在我們剛接觸 Python 時,列表推導(dǎo)式可能看起來比較復(fù)雜,但是了解后會發(fā)現(xiàn)它非常好用。正如上圖所示,列表推導(dǎo)式不僅可讀性非常強(qiáng),它所需要的代碼量是最少的,它的執(zhí)行速度也是最快的。

對于列表推導(dǎo)式,我們可以從列表中選擇具體的元素,并做一些操作和判斷,從而創(chuàng)建新的列表。值得注意的是,我們甚至能使用 Pandas Series 或 NumPy Array 進(jìn)行列表推導(dǎo)操作。下面讓我們具體看看列表推導(dǎo)是什么吧!

什么是列表推導(dǎo)式

如果我們有一個列表,并希望抽取列表中的元素,那么最標(biāo)準(zhǔn)的方法是使用 Python 循環(huán),但是我們也可以直接通過列表推導(dǎo)式,它只需一行代碼就能搞定所有操作。當(dāng)然,抽取列表元素的前提是,我們要理解列表是一種可迭代對象,它允許依次讀取不同的元素。

想象一下,如果動物園中有很多不同的動物,每年每一只動物都需要定期體檢,那么動物園就是列表。我們可以遍歷整個動物園,并依次抽取動物,抽取的動物并不做進(jìn)一步的處理,直接放到體檢列表中。如下所示為一般 Python 循環(huán)的做法:

# Creating our animal park
animal_park = ['Rabbit','Rabbit','Rabbit','Rabbit','Cat','Cat','Cat','Cat','Cat','Cat','Cat', 'Turtle','Turtle','Turtle','Turtle','Turtle','Turtle','Turtle', 'Dog','Dog', 'Kangaroo','Kangaroo','Kangaroo','Kangaroo','Kangaroo','Kangaroo']

# Creating a new list for our animal doctor with all animals
animal_doctor = []
for animal in animal_park:
animal_doctor.append(animal)

 

上面的代碼很簡單,用一個 for 循環(huán)就行,它的語義也很容易理解。如下我們可以使用列表推導(dǎo)式重寫這一個循環(huán):

animal_doctor = [animal for animal in animal_park]

通過列表推導(dǎo)式,我們將代碼量由三行降低到一行。如果對比兩者,我們會發(fā)現(xiàn)它們其實(shí)是一樣的,差不多都是創(chuàng)建、遍歷和接收三部分。

 

 

圖1:標(biāo)準(zhǔn)循環(huán)與列表推導(dǎo)的對比。

條件語句

這樣看起來列表推導(dǎo)式也沒什么大不了,但別忘了它還能對元素做進(jìn)一步操作,例如加個條件語句。在標(biāo)準(zhǔn)的列表循環(huán)中,我們的條件語句如下所示會加到 for 循環(huán)中。

animal_doctor = []
for animal in animal_park:
if animal != 'Dog' and animal != 'Cat':
animal_doctor.append(animal)

 

在列表推導(dǎo)式中,我們可以將條件加到里面,用稍微長一點(diǎn)的單行代碼完成整個流程。上面代碼塊可以等價地表達(dá)為:

nimal_doctor = [animal for animal in animal_park if animal != 'Dog' and animal != 'Cat']

另外非常重要的一點(diǎn)是,列表推導(dǎo)式的速度非?臁H缦聝烧叨技恿藯l件語句,但是列表推導(dǎo)式要比一般的循環(huán)語句快了 51%。

 

 

圖2:列表推導(dǎo)與標(biāo)準(zhǔn)循環(huán)二者速度的對比。

最后,如果你使用過列表推導(dǎo)式創(chuàng)建新的列表,那么你最好一直使用它,因?yàn)槲覀儧]有原因再使用標(biāo)準(zhǔn) Python 循環(huán)。我們可以發(fā)現(xiàn),只要明晰了基本概念,那么列表推導(dǎo)式還是非常容易使用的。

原文鏈接:https://towardsdatascience.com/python-list-comprehension-in-3-minutes-and-3-reasons-why-you-should-use-it-bf398654caf9

標(biāo)簽: Python

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:政務(wù)大數(shù)據(jù)治理中公民權(quán)利保護(hù)的國際經(jīng)驗(yàn)

下一篇:谷歌開始收集面部數(shù)據(jù),隱私問題再度引爆