自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不容錯(cuò)過(guò)!Python列表推導(dǎo)式簡(jiǎn)明教程

開發(fā) 后端
列表解析式(List comprehension)或者稱為列表推導(dǎo)式,是 Python 中非常強(qiáng)大和優(yōu)雅的方法。它可以基于現(xiàn)有的列表做一些操作,從而快速創(chuàng)建新列表。

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

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

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

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

  1. # Creating our animal park  
  2. 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 ] 
  3. # Creating a new list for our animal doctor with all animals  
  4. animal_doctor = []  
  5. for animal in animal_park:  
  6.    animal_doctor.append(animal) 

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

  1. animal_doctor = [animal for animal in animal_park] 

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

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

條件語(yǔ)句

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

  1. animal_doctor = []  
  2. for animal in animal_park:  
  3.    if animal !=  Dog  and animal !=  Cat :  
  4.       animal_doctor.append(animal) 

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

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

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

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

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

 

責(zé)任編輯:龐桂玉 來(lái)源: 機(jī)器學(xué)習(xí)算法與Python學(xué)習(xí)
相關(guān)推薦

2013-12-03 13:05:30

Lua腳本語(yǔ)言

2016-02-29 15:00:48

RSA/信息安全

2014-06-20 10:51:35

Linux LVM邏輯卷

2011-06-03 08:49:54

Java

2023-10-20 14:08:35

digDNS

2022-06-16 07:32:38

VSCodePython插件

2015-09-17 17:37:57

工具程序開源

2023-06-29 17:53:00

VSCode插件程序

2010-05-26 10:42:20

SVN1.5配置

2023-11-02 14:26:30

PyTorch機(jī)器學(xué)習(xí)

2023-11-02 14:30:25

機(jī)器學(xué)習(xí)

2014-07-10 10:56:21

jQuery

2019-10-29 09:00:00

AIOps人工智能

2014-08-26 10:38:23

AppAndroid Wea應(yīng)用

2022-09-22 16:17:12

css編程語(yǔ)言開發(fā)

2009-08-06 17:45:08

C# Webservi

2021-01-05 09:55:46

TmateLinux命令

2012-12-10 09:24:15

2016-06-21 16:09:14

智能化

2013-08-19 10:45:42

華為HCC大會(huì)HCC2013華為
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)