旗下產(chǎn)業(yè): A產(chǎn)業(yè)/?A實(shí)習(xí)/?A計(jì)劃
全國統(tǒng)一咨詢熱線:010-5367 2995
首頁 > 熱門文章 > 大數(shù)據(jù)分析 > 大數(shù)據(jù)分析Python內(nèi)置函數(shù)range使用教程

大數(shù)據(jù)分析Python內(nèi)置函數(shù)range使用教程

時(shí)間:2020-05-20來源:5wd995.cn點(diǎn)擊量:作者:Sissi
時(shí)間:2020-05-20點(diǎn)擊量:作者:Sissi



  循環(huán)是任何編程語言的組成部分。在大數(shù)據(jù)分析Python中,循環(huán)的重要組成部分是內(nèi)置range函數(shù)。
 

  在本詳細(xì)指南中,我們將通過range示例向您介紹該函數(shù)的工作原理,并討論其局限性及其解決方法。盡管range對于各種各樣的大數(shù)據(jù)分析Python編程任務(wù)很有用,但本指南將以該range函數(shù)的幾個(gè)數(shù)據(jù)科學(xué)用例作為結(jié)尾。
 

  就本教程而言,我們假定您至少了解一些大數(shù)據(jù)分析Python語法。如果您以前從未使用過大數(shù)據(jù)分析Python,建議您先從此交互式大數(shù)據(jù)分析Python基礎(chǔ)知識課程開始。
 

  大數(shù)據(jù)分析Python范圍簡史
 

  本教程的重點(diǎn)是大數(shù)據(jù)分析Python 3,但是如果您在使用大數(shù)據(jù)分析Python 2之前已經(jīng)進(jìn)行過一些解釋,因?yàn)閞ange這兩個(gè)版本之間的含義有所變化。
 

  range大數(shù)據(jù)分析Python 2中 的函數(shù)生成了一個(gè)可以迭代的數(shù)字列表。因此,對于大列表大小,此過程占用了大量內(nèi)存。xrange大數(shù)據(jù)分析Python 2中的函數(shù)通過惰性求值返回項(xiàng)目,這意味著僅在需要時(shí)才生成數(shù)字,從而使用更少的內(nèi)存。
 

  xrange大數(shù)據(jù)分析Python 2中 的函數(shù)range在大數(shù)據(jù)分析Python 3 中重命名,而range大數(shù)據(jù)分析Python 2中的函數(shù)已棄用。在本教程中,我們正在使用range大數(shù)據(jù)分析Python 3 的功能,因此它在與range大數(shù)據(jù)分析Python 2 相關(guān)時(shí)不會出現(xiàn)性能問題。
 

大數(shù)據(jù)分析Python范圍:基本用途
 

  讓我們首先來看一下for循環(huán)和range大數(shù)據(jù)分析Python中函數(shù)的基本用法。讓我們打印前五個(gè)整數(shù)。
 

python range函數(shù)
 

  上面的代碼段循環(huán)顯示數(shù)字0到4。請注意,這五個(gè)未包含在循環(huán)中。range因此,的基本用途是遍歷數(shù)字列表。我們將range很快重新討論范圍。
 

  我們可以使用三個(gè)參數(shù)range:開始,停止和步進(jìn)。我們可以如下說明這三個(gè):
 

  1)range(stop):這會創(chuàng)建一個(gè)范圍從零到小于終止號的數(shù)字范圍,并增加一個(gè)。

  2)范圍(開始,停止):這會創(chuàng)建一個(gè)范圍從開始編號到小于結(jié)束編號的數(shù)字范圍,并增加一個(gè)。

  3)范圍(開始,停止,步進(jìn)):這會創(chuàng)建一個(gè)范圍從開始編號到小于停止編號的數(shù)字,并逐步遞增。
 

  上面的簡單示例使用了聲明range函數(shù)的第一種方式。讓我們探索另外兩種方式。

python range函數(shù)
 

  請注意,起始編號包含在范圍內(nèi),而終止編號不包含在范圍內(nèi)。

python range函數(shù)
 

  在這種第三種聲明方式中range,我們從起始編號開始,然后加三(步驟編號),直到達(dá)到終止編號。
 

  范圍:數(shù)據(jù)類型
 

  讓我們檢查range函數(shù)返回的對象的類型。

python range函數(shù)
 

  請注意,這range是大數(shù)據(jù)分析Python中的一種類型。該類的默認(rèn)打印方法將打印范圍對象將迭代通過的數(shù)字范圍。請注意,仍未生成數(shù)字-這是由于前面提到的節(jié)省內(nèi)存的“惰性評估”。僅當(dāng)數(shù)字以某種方式實(shí)際使用時(shí)才會生成數(shù)字(例如,如上所述,在print函數(shù)中被調(diào)用)。

python range函數(shù)
 

范圍對象:高級用途
 

  有趣的是,我們可以通過范圍對象的索引訪問范圍對象,就像使用列表一樣。我們范圍內(nèi)的第三個(gè)對象是2。

python range函數(shù)
 

  像列表一樣,我們也可以切片范圍對象。這將返回一個(gè)新的范圍對象!
 

python range函數(shù)
 

  我們也可以使用reversed()適用于列表的相同功能來反轉(zhuǎn)范圍對象。

python range函數(shù)
 

  范圍可用于生成負(fù)數(shù)。

python range函數(shù)
 

  我們還可以定義一個(gè)負(fù)階躍函數(shù)來按遞減順序生成數(shù)字,而不是使用該reversed函數(shù)。

python range函數(shù)
 

  請注意,如果您使用帶有的step參數(shù)range,則該參數(shù)不能為零(這將導(dǎo)致無限循環(huán)并因此引發(fā)ValueError)。
 

  此外,如果從您的開始參數(shù)開始計(jì)數(shù)永遠(yuǎn)不會到達(dá)您的結(jié)束參數(shù),range則不會返回任何內(nèi)容。請注意,當(dāng)我們運(yùn)行下面的代碼時(shí),不會打印任何內(nèi)容,因?yàn)槿绻覀儚?7開始并遞增計(jì)數(shù),則永遠(yuǎn)無法達(dá)到指定的end參數(shù)10:

python range函數(shù)
 

帶浮點(diǎn)數(shù)的范圍對象
 

  范圍功能不適用于浮點(diǎn)數(shù)。只能將整數(shù)值指定為開始,停止和步驟參數(shù)。

python range函數(shù)
 

  但是,如果需要使用浮點(diǎn)數(shù)生成類似范圍的收益,則有兩種解決方法。
 

  首先,我們可以定義一個(gè)具有三個(gè)參數(shù)的簡單函數(shù),該函數(shù)逐步增加起始編號,直a到達(dá)到停止為止:
 

python range函數(shù)
 

  我們也可以使用NumPy從NumPy的arange()函數(shù)中獲得相同的結(jié)果。

python range函數(shù)
 

  這個(gè)數(shù)字0.30000000000000004是哪里來的?系統(tǒng)僅存儲浮點(diǎn)數(shù)的近似值。因此,如果要生成更清晰的輸出,則在處理像這樣的浮點(diǎn)數(shù)時(shí)可能需要使用該round()函數(shù)。

python range函數(shù)
 

在數(shù)據(jù)科學(xué)中使用大數(shù)據(jù)分析Python的范圍函數(shù)
 

  讀取大文件
 

  在數(shù)據(jù)科學(xué)中,大數(shù)據(jù)分析Python的range函數(shù)的一種用途是在讀取大型文件時(shí)。
 

  例如,考慮一下 UCI提供的1985年的汽車進(jìn)口數(shù)據(jù)集。該文件為CSV格式,其中值之間用逗號分隔。下載文件并使用open()功能打開它。讓我們使用該.readline()方法打印前五行。

python range函數(shù)
 

  在頭文件描述列名。最后一列包含汽車進(jìn)口價(jià)格。如果我們?yōu)g覽文件的前幾行,則會注意到丟失的項(xiàng)目存儲為問號(?)。
 

  每條打印行之間以換行符(\n)結(jié)尾的行之間有一個(gè)空行。我們將需要在下面的分析中考慮這一點(diǎn)。讓我們檢查文件中存在多少行。在UNIX終端中,可以將命令wc -l以文件名作為參數(shù)來計(jì)算行數(shù)。如果使用的是Jupyter筆記本,則可以在命令前使用感嘆號,以從單元格中運(yùn)行終端命令。

python range函數(shù)
 

  利用205行數(shù)據(jù),讓我們嘗試在數(shù)據(jù)集中查找價(jià)格最高的汽車進(jìn)口和汽車的行號。首先,我們將循環(huán)遍歷文件長度。接下來,使用.readline()方法讀取該行,在每行末尾去除換行符,然后使用split()函數(shù)將該行轉(zhuǎn)換為項(xiàng)目列表。
 

  清單的最后一項(xiàng)是汽車進(jìn)口價(jià)格。如果價(jià)格缺失,我們將遍歷下一個(gè)項(xiàng)目。如果價(jià)格高于我們的價(jià)格max_price,則我們更改的值max_price并更新存儲在變量中的行號max_price_loc。

python range函數(shù)
 

  1985年最昂貴的汽車售價(jià)為45400美元,按通脹率計(jì)算的2019年美元匯率約為108000美元。
 

  Web爬網(wǎng)時(shí)遍歷頁面
 

  范圍函數(shù)在數(shù)據(jù)科學(xué)中的另一個(gè)用途是從某些網(wǎng)站進(jìn)行Web抓取。
 

  例如,假設(shè)我們要從BBS論壇中提取數(shù)據(jù)。通常,帖子分布在大量頁面上,而頁面編號包含在URL中。無需一次輸入每個(gè)頁面URL,我們可以一次輸入U(xiǎn)RL并通過用range函數(shù)產(chǎn)生的每個(gè)數(shù)字替換URL中的頁面號來遍歷每個(gè)頁面。
 

  例如,如果我們要向URL格式為的頁面發(fā)送請求http://www.website.com/?p=page_number,則可以使用range依次生成每個(gè)URL。在下面的示例中,我們獲得了前十個(gè)頁面的URL,但是可以使用此技術(shù)快速生成成百上千個(gè)URL,然后您就可以逐個(gè)抓取內(nèi)容,而不必在您的網(wǎng)站中放置多個(gè)URL碼。

python range函數(shù)
 

  在大數(shù)據(jù)分析Python內(nèi)置函數(shù)range使用教程中,我們學(xué)習(xí)了使用該range()函數(shù)的一些不同方式,并看到了一些有關(guān)如何在數(shù)據(jù)科學(xué)工作中特別有用的示例。
 

  如果您使用數(shù)據(jù),range()不一定每天都會使用該功能,但是在某些情況下,一定要牢牢掌握其工作方式可以節(jié)省大量時(shí)間和精力。
 

預(yù)約申請免費(fèi)試聽課

填寫下面表單即可預(yù)約申請免費(fèi)試聽!怕錢不夠?可先就業(yè)掙錢后再付學(xué)費(fèi)! 怕學(xué)不會?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!

?2007-2021/北京漫動者教育科技有限公司版權(quán)所有
備案號:京ICP備12034770號

?2007-2022/ 5wd995.cn 北京漫動者數(shù)字科技有限公司 備案號: 京ICP備12034770號 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc

京公網(wǎng)安備 11010802035704號

網(wǎng)站地圖