Python與數(shù)據(jù)科學(xué)PPT完整全套教學(xué)課件_第1頁
Python與數(shù)據(jù)科學(xué)PPT完整全套教學(xué)課件_第2頁
Python與數(shù)據(jù)科學(xué)PPT完整全套教學(xué)課件_第3頁
Python與數(shù)據(jù)科學(xué)PPT完整全套教學(xué)課件_第4頁
Python與數(shù)據(jù)科學(xué)PPT完整全套教學(xué)課件_第5頁
已閱讀5頁,還剩453頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

一、基礎(chǔ)編1、基礎(chǔ)編.pptx2、分析編.pptx3、挖掘編.pptx4、提高編.pptx全套可編輯PPT課件本章主要內(nèi)容

數(shù)據(jù)科學(xué)簡介

python基礎(chǔ)知識1

數(shù)據(jù)科學(xué)簡介1.1什么是數(shù)據(jù)科學(xué)

近幾年,“數(shù)據(jù)科學(xué)”的概念被媒體和大眾炒得越來越熱,但究竟什么是“數(shù)據(jù)科學(xué)”,不同的時期、不同的專家給出了不同的答案。Naur認(rèn)為,數(shù)據(jù)科學(xué)是計算機科學(xué)的一個替代性稱謂。Wu則認(rèn)為,數(shù)據(jù)科學(xué)就是統(tǒng)計學(xué)。而Cleveland則認(rèn)為數(shù)據(jù)科學(xué)是統(tǒng)計學(xué)加上它在計算技術(shù)方面的擴展。Conway則認(rèn)為數(shù)據(jù)科學(xué)是計算機科學(xué)技術(shù)、數(shù)學(xué)與統(tǒng)計學(xué)知識、專業(yè)應(yīng)用知識三者的交集??陀^來講,迄今數(shù)據(jù)科學(xué)還沒有一個統(tǒng)一成熟的定義,ChikioHayashi、MikeLoukides等人曾先后撰文專門探究“什么是數(shù)據(jù)科學(xué)”,作為一門交叉科學(xué),我們認(rèn)為數(shù)據(jù)科學(xué)是一門包括了計算機技巧,數(shù)學(xué)和統(tǒng)計知識,實質(zhì)性的專業(yè)知識的強調(diào)以數(shù)據(jù)為導(dǎo)向的分析與決策的科學(xué)。

事實上,數(shù)據(jù)科學(xué)是利用計算機的運算能力對數(shù)據(jù)進(jìn)行處理,從數(shù)據(jù)中提取信息,進(jìn)而形成“知識”的一門科學(xué)。它已經(jīng)影響了計算機視覺、信號處理、自然語言識別等計算機分支,也已經(jīng)在IT、金融、醫(yī)學(xué)、自動駕駛等領(lǐng)域得到廣泛使用,甚至在總統(tǒng)競選方面都出現(xiàn)了數(shù)據(jù)科學(xué)的身影。

數(shù)據(jù)科學(xué)的學(xué)習(xí)是一項即有趣又艱辛的工作,Metamarket公司的CEOMikeDriscoll曾說過:研究數(shù)據(jù)科學(xué),一方面需要如極客那般刻苦鉆研,一方面需要像統(tǒng)計學(xué)家那樣擁有完美的理論。數(shù)據(jù)科學(xué)家不僅僅是極客——極客只關(guān)心如何調(diào)試一行Bash腳本或Pig腳本,沒人會在意非歐氏距離矩陣。數(shù)據(jù)科學(xué)家也不僅僅是統(tǒng)計學(xué)家——后者只關(guān)注如何完成一個理論的證明或構(gòu)建出一個完美的模型,很少有人會使用R語言將數(shù)據(jù)文件讀入系統(tǒng),從而進(jìn)行后續(xù)的分析。數(shù)據(jù)科學(xué)是一門關(guān)于數(shù)據(jù)的工程,它需要同時具備理論基礎(chǔ)和工程經(jīng)驗,需要掌握各種工具的用法。1.2如何學(xué)習(xí)數(shù)據(jù)科學(xué)

數(shù)據(jù)科學(xué)集成了多種領(lǐng)域的不同元素,包括信號處理,數(shù)學(xué),概率模型技術(shù)和理論,機器學(xué)習(xí),計算機編程,統(tǒng)計學(xué),數(shù)據(jù)工程,模式識別和學(xué)習(xí),可視化,不確定性建模,數(shù)據(jù)倉庫,以及從數(shù)據(jù)中析取規(guī)律和產(chǎn)品的高性能計算。而且,數(shù)據(jù)科學(xué)并不局限于大數(shù)據(jù),但是數(shù)據(jù)量的擴大誠然使得數(shù)據(jù)科學(xué)的地位越發(fā)重要。所以,數(shù)據(jù)科學(xué)家,顧名思義就是數(shù)據(jù)科學(xué)的從業(yè)者。1.3什么是數(shù)據(jù)科學(xué)家

用ThomasH.Davenport(埃森哲戰(zhàn)略變革研究院主任)和D.J.Patil(美國科學(xué)促進(jìn)會科學(xué)與技術(shù)政策研究員,為美國國防部服務(wù))的話來總結(jié):數(shù)據(jù)科學(xué)家傾向于用探索數(shù)據(jù)的方式來看待周圍的世界。(好奇心)把大量散亂的數(shù)據(jù)變成結(jié)構(gòu)化的可供分析的數(shù)據(jù),還要找出豐富的數(shù)據(jù)源,整合其他可能不完整的數(shù)據(jù)源,并清理成結(jié)果數(shù)據(jù)集。(問題分體整理能力)新的競爭環(huán)境中,挑戰(zhàn)不斷地變化,新數(shù)據(jù)不斷地流入,數(shù)據(jù)科學(xué)家需要幫助決策者穿梭于各種分析,從臨時數(shù)據(jù)分析到持續(xù)的數(shù)據(jù)交互分析。(快速學(xué)習(xí)能力)數(shù)據(jù)科學(xué)家會遇到技術(shù)瓶頸,但他們能夠找到新穎的解決方案。(問題轉(zhuǎn)化能力)當(dāng)他們有所發(fā)現(xiàn),便交流他們的發(fā)現(xiàn),建議新的業(yè)務(wù)方向。(業(yè)務(wù)精通)他們很有創(chuàng)造力的展示視覺化的信息,也讓找到的模式清晰而有說服力。(表現(xiàn)溝通能力)他們會把蘊含在數(shù)據(jù)中的規(guī)律建議給Boss,從而影響產(chǎn)品,流程和決策。(決策力)1.3什么是數(shù)據(jù)科學(xué)家1.4數(shù)據(jù)科學(xué)家需要掌握的技能

計算機科學(xué)

數(shù)學(xué)

統(tǒng)計學(xué)

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

某一領(lǐng)域的專業(yè)知識

溝通和演講的技巧

數(shù)據(jù)可視化2.1python基本概念1.5python與數(shù)據(jù)科學(xué)

隨著NumPy、SciPy、matplotlib、ETS等眾多程序庫的開發(fā),Python越來越適合于做科學(xué)計算。與科學(xué)計算領(lǐng)域最流行的商業(yè)軟件MATLAB相比,Python是一門真正的通用程序設(shè)計語言,比MATLAB所采用的腳本語言的應(yīng)用范圍更廣泛,有更多程序庫的支持,適用于Windows和Linux等多種平臺,完全免費并且開放源碼。雖然MATLAB中的某些高級功能目前還無法替代,但是對于基礎(chǔ)性、前瞻性的科研工作和應(yīng)用系統(tǒng)的開發(fā),完全可以用Python來完成。1.6數(shù)據(jù)科學(xué)領(lǐng)域常用的python包⑴Numpy⑵Scipy⑶Pandas⑷Matplotlib⑸Scikit-learn1.6數(shù)據(jù)科學(xué)領(lǐng)域常用的python包還有其它一些庫,如:用于自然語言處理的Nltk,用于網(wǎng)站數(shù)據(jù)抓取的Scrappy,用于網(wǎng)絡(luò)挖掘的Pattern,用于深度學(xué)習(xí)的Theano等。但是,如果你正開始學(xué)習(xí)Python,建議你首先熟悉這五個庫,這些教程都非常適合初學(xué)者。Python有著像matlab一樣強大數(shù)值計算工具包NumPy;有著繪圖工具包matplotlib;有著科學(xué)計算工具包SciPy(基于Numpy和matplotlib的)。這三者為Python提供了像Matlab一樣強大的矩陣控制能力,這是Python完勝Perl和Ruby的地方。對于數(shù)據(jù)科學(xué)領(lǐng)域而言,Python可能是最重要的語言了,如前文所述,它有著非常豐富的生態(tài)系統(tǒng)。Python直接能夠處理數(shù)據(jù),而Pandas幾乎可以像SQL那樣對數(shù)據(jù)進(jìn)行控制。Matplotlib能夠讓你對數(shù)據(jù)和結(jié)果進(jìn)行可視化,以便快速理解你的數(shù)據(jù)。Scikit-learn提供了機器學(xué)習(xí)算法支持,Theano提供了深度學(xué)習(xí)框架(還可以使用GPU加速)。2Python基礎(chǔ)知識2.1python基本概念Python是一種腳本語言,編程語言有多種多樣,但是有開源和閉源之分,Python就是一個開放核心源代碼的編程語言,它開發(fā)代碼的效率非常高,代碼編寫后非常易讀,非常適合多人參與的項目。它支持面向?qū)ο蟮木幊谭绞?,同樣也可以面對過程,非常靈活,它不但免費,而且可以任意Copy分發(fā)。Python是開源自由軟件,容易獲得,可以閱讀它的源程序并修改它。同時,python是一種功能強大而完善的通用語言,也是一種直譯式計算機程序設(shè)計語言。該語言借鑒了腳本和解釋性語言的易用性,能夠高效地完成各種復(fù)雜的高層次任務(wù)。本章接下來將簡單介紹python的基礎(chǔ)知識和特性。2.1python基本概念

(1)安裝Python在開始學(xué)習(xí)python前,需要安裝一些應(yīng)用軟件。下面簡要介紹如何下載和安裝Python。如果想直接跳到安裝過程的介紹而不看詳細(xì)的向?qū)В梢灾苯釉L問網(wǎng)址:/download,下載并安裝Python的最新版本。要在Windows系統(tǒng)中安裝Python,請參照下面的步驟進(jìn)行。

2.1python基本概念①打開Web瀏覽器,訪問;②點擊Download鏈接;③可以在這里看到幾條鏈接,名字類似于Python2.7Windowsinstaller。點擊Windowsinstaller鏈接并且下載安裝文件;④將WindowsInstaller文件放在計算機的任何位置均可;⑤在Windows瀏覽器中雙擊運行所下載的文件,這樣會開啟一個Python的安裝向?qū)АT撓驅(qū)褂闷饋砗芎唵?,只需要接受默認(rèn)設(shè)置,等到安裝程序完成,就能使用Python了。

如果安裝一切正常,應(yīng)該能在Windows的開始菜單中找到新的程序。按照開始—>程序—>Python—>IDLE(PythonGUI)的步驟啟動Python的開發(fā)環(huán)境,啟動好的Python運行窗口如圖2-1所示,>>>是pythonIDLE運行窗口的提示符,可以在后面輸入Python命令。2.1python基本概念圖2-1啟動好的python運行窗口2.1python基本概念(2)

Python基礎(chǔ)概念①常量

一個字面意義上的常量的例子是如鍵入文檔的引述或關(guān)注點的摘要,可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項卡更改重要引述文本框的格式。同15、1.823、10.25E-3這樣的數(shù),或者如同"Howareyou"、"It'sasquare!"這樣的字符串。它們具備字面的意義,按照它們的字面意義使用它們的值。數(shù)2總是代表它自己,而不會是別的什么東西——它是一個常量,因為不能改變它的值。因此,所有這些都被稱為字面意義上的常量。Python中邏輯常量為true(真)和false(假)。2.1python基本概念②編碼所謂文件編碼指的是Python源碼的編碼格式,一般用notepad++能看到源碼文件的編碼。源碼文件的格式會影響到在源碼中定義的字符串,假設(shè)源碼的編碼格式為utf-8,那么下面定義的字符串的編碼格式就是utf-8。源碼的編碼格式為utf-8,所以s1的編碼格式為utf-8。若要想將格式轉(zhuǎn)換為gb2312,則必須先解碼(decode)成系統(tǒng)缺省編碼,然后再編碼(encode)成gb2312。2.1python基本概念③轉(zhuǎn)義符

如果想要在一個字符串中包含一個單引號('),例如,這個字符串是What'syourname?。如果用'What'syourname?'來指示它,Python會弄不明白這個字符串從何處開始,何處結(jié)束,因為這里的’都被認(rèn)為是字符串的標(biāo)識符,但又不成對。所以,要指明單引號而不是字符串的標(biāo)識,可以通過“\”來完成,如,'What\'syourname?'。第2個'前有一個“\”表示它就是單引號,而不是字符串的標(biāo)識符。這里的“\”就是轉(zhuǎn)義符。

另一個表示這種字符串的方法是"What'syourname?",即用雙引號。類似地,要在雙引號字符串中使用雙引號本身的時候,也可以借助于轉(zhuǎn)義符。另外,可以用轉(zhuǎn)義符\\來指示反斜杠本身。2.1python基本概念轉(zhuǎn)義字符描述\(在行尾時)續(xù)行符\\反斜杠符號\'單引號\"雙引號\a響鈴\b退格(Backspace)\e轉(zhuǎn)義\000空\n換行\(zhòng)v縱向制表符\t橫向制表符\r回車\f換頁\oyyc\xyy十進(jìn)制數(shù)yy代表的字符\other其它的字符以普通格式輸出表2-1轉(zhuǎn)義字符列表2.1python基本概念>>>print'I\'mok.'I'mok.>>>print'I\'mlearning\nPython.'I'mlearningPython.>>>print'\\\n\\'\\轉(zhuǎn)義字符\可以轉(zhuǎn)義很多字符,比如\n表示換行,\t表示制表符,字符\本身也要轉(zhuǎn)義,所以\\表示的字符就是\,可以在Python的交互式命令行用print打印字符串:2.1python基本概念如果字符串里面有很多字符都需要轉(zhuǎn)義,就需要加很多\,為了簡化,Python還允許用r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義:>>>print'\\\t\\'\\>>>printr'\\\t\\'\\\t\\2.1python基本概念④整數(shù)和浮點數(shù)在Python中包含有這兩種類型的數(shù)(number):整數(shù)(int)、浮點數(shù)(float)。A整數(shù)Python可以處理任意大小的整數(shù),當(dāng)然包括負(fù)整數(shù),在程序中的表示方法和數(shù)學(xué)上的寫法一模一樣,例如:1,100,-8080,0,等等。計算機由于使用二進(jìn)制,所以,有時候用十六進(jìn)制表示整數(shù)比較方便,十六進(jìn)制用0x前綴和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。2.1python基本概念B浮點數(shù)

浮點數(shù)也就是小數(shù),之所以稱為浮點數(shù),是因為按照科學(xué)記數(shù)法表示時,一個浮點數(shù)的小數(shù)點位置是可變的,比如,1.23x109和12.3x108是相等的。浮點數(shù)可以用數(shù)學(xué)寫法,如1.23,3.14,-9.01,等等。但是對于很大或很小的浮點數(shù),就必須用科學(xué)計數(shù)法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。2.1python基本概念⑤字符串字符串是以''或""括起來的任意文本,比如'abc',"xyz"等等。請注意,''或""本身只是一種表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c這3個字符。如果'本身也是一個字符,那就可以用""括起來,比如"I'mOK"包含的字符是I,',m,空格,O,K這6個字符。如果字符串內(nèi)部既包含'又包含",可以用轉(zhuǎn)義字符\來標(biāo)識,比如:'I\'m\"OK\"!'表示的字符串內(nèi)容是:I'm"OK"!

如果字符串內(nèi)部有很多換行,用\n寫在一行里不好閱讀,為了簡化,Python允許用'''...'''的格式表示多行內(nèi)容:>>>print'\\\t\\'\\>>>printr'\\\t\\'\\\t\\2.1python基本概念⑥布爾值布爾值和布爾代數(shù)的表示完全一致,一個布爾值只有True、False兩種值,要么是True,要么是False,在Python中,可以直接用True、False表示布爾值(請注意大小寫),也可以通過布爾運算計算出來:>>>TrueTrue>>>FalseFalse>>>3>2True>>>3>5False2.1python基本概念

布爾值可以用and、or和not運算。and運算是與運算,只有所有都為True,and運算結(jié)果才是True:>>>TrueandTrueTrue>>>TrueandFalseFalse>>>FalseandFalseFalseor運算是或運算,只要其中有一個為True,or運算結(jié)果就是True:>>>TrueorTrueTrue>>>TrueorFalseTrue>>>FalseorFalseFalse2.1python基本概念not運算是非運算,它是一個單目運算符,把True變成False,F(xiàn)alse變成True:>>>notTrueFalse>>>notFalseTrue布爾值經(jīng)常用在條件判斷中,比如:ifage>=18:print'adult'else:print'teenager'2.1python基本概念⑦空值

空值是Python里一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。此外,Python還提供了列表、字典等多種數(shù)據(jù)類型,還允許創(chuàng)建自定義數(shù)據(jù)類型,我們后面會繼續(xù)講到。2.1python基本概念⑧變量及其命名規(guī)范變量在程序中就是用一個變量名表示了,變量名必須是大小寫英文、數(shù)字和_的組合,且不能用數(shù)字開頭,比如:a=1,變量a是一個整數(shù)。t_007='T007',變量t_007是一個字符串。Answer=True,變量Answer是一個布爾值True。在Python中,等號=是賦值語句,可以把任意數(shù)據(jù)類型賦值給變量,同一個變量可以反復(fù)賦值,而且可以是不同類型的變量,例如:a=123#a是整數(shù)printaa='ABC'#a變?yōu)樽址畃rinta2.1python基本概念

變量是標(biāo)識符的例子。標(biāo)識符是用來標(biāo)識某樣?xùn)|西的名字。變量外,使用標(biāo)識符的例子還有函數(shù)名、類名等。在命名標(biāo)識符的時候,要遵循下列規(guī)則:第一個字符必須是字母表中的字母(大寫或小寫)或者一個下劃線(‘_’)。其他部分可以由字母(大寫或小寫)、下劃線(‘_’)或數(shù)字(0-9)組成。python標(biāo)識符對大小寫是敏感的。例如,name和Name被認(rèn)為是兩個標(biāo)識符。變量名全部小寫,由下劃線連接各個單詞,如:color=WHITE,this_is_a_variable=1。變量名不應(yīng)帶有類型信息,因為Python是動態(tài)類型語言。如iValue、names_list、dict_obj等都是不好的命名。2.1python基本概念⑨縮進(jìn)空白在Python中非常重要。行首的空白稱為縮進(jìn),它決定邏輯行的縮進(jìn)層次,從而用來決定語句的分組。同一層次的語句必須有相同的縮進(jìn)量(縮進(jìn)幾個字符)。每一組這樣的語句稱為一個塊。語句塊是進(jìn)行處理的同一批語句。簡言之,python是用連續(xù)相同層次縮進(jìn)表示語句塊的。例如for語句后相同縮進(jìn)量相同的連續(xù)語句是其循環(huán)體。注意,不要混合使用制表符和空格來縮進(jìn),因為這在跨越不同的平臺的時候,無法正常工作。建議在每個縮進(jìn)層次使用單個制表符或兩個或四個空格。2.1python基本概念⑩注釋在Python中,#號開始至行末的文字為注釋。沒有多行注釋。同代碼不一致的注釋比沒注釋更差。當(dāng)代碼修改時,始終優(yōu)先更新注釋!注釋應(yīng)該是完整的句子,如果注釋是一個短語或句子,首字母應(yīng)該大寫,除非他是一個以小寫字母開頭的標(biāo)識符(永遠(yuǎn)不要修改標(biāo)識符的大小寫)。如果注釋很短,最好省略末尾的句號。2.1python基本概念⑶輸入和輸出①輸入

現(xiàn)在已經(jīng)可以用print輸出你想要的結(jié)果了。但是,如果要讓用戶從電腦輸入一些字符怎么辦?Python提供了一個raw_input,可以讓用戶輸入字符串,并存放到一個變量里。比如輸入用戶的名字:>>>name=raw_input()Michael2.1python基本概念②輸出用print加上字符串,就可以向屏幕上輸出指定的文字。比如輸出'hello,world',用代碼實現(xiàn)如下:

print語句也可以跟上多個字符串,用逗號“,”隔開,就可以連成一串輸出:>>>print'Thequickbrownfox','jumpsover','thelazydog'Thequickbrownfoxjumpsoverthelazydog>>>print'hello,world‘2.1python基本概念print會依次打印每個字符串,遇到逗號“,”會輸出一個空格,因此,輸出的字符串是這樣拼起來的:2.1python基本概念⑷運算符及字符串的運算①運算符Python中包含數(shù)學(xué)中的多種運算法則,詳細(xì)見下表:運算符名稱說明例子+加兩個對象相加3+5得到8。'a'+'b'得到'ab'。-減得到負(fù)數(shù)或是一個數(shù)減去另一個數(shù)-5.2得到一個負(fù)數(shù)。50-24得到26。*乘兩個數(shù)相乘或是返回一個被重復(fù)若干次的字符串2*3得到6。'la'*3得到'lalala'。**冪返回x的y次冪3**4得到81(即3*3*3*3)/除x除以y4/3得到1(整數(shù)的除法得到整數(shù)結(jié)果)。4.0/3或4/3.0得到1.3333333333333333//取整除返回商的整數(shù)部分4//3.0得到1.0%取余返回除法的余數(shù)8%3得到2。-25.5%2.25得到1.5<

小于返回x是否小于y。所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。5<3返回0(即False)而3<5返回1(即True)。比較可以被任意連接:3<5<7返回True。>

大于返回x是否大于y5>3返回True。如果兩個操作數(shù)都是數(shù)字,它們首先被轉(zhuǎn)換為一個共同的類型。否則,它總是返回False。<=小于等于返回x是否小于等于yx=3;y=6;x<=y返回True。>=大于等于返回x是否大于等于yx=4;y=3;x>=y返回True。==等于比較對象是否相等x=2;y=2;x==y返回True!=不等于比較兩個對象是否不相等x=2;y=3;x!=y返回True。2.1python基本概念②運算符優(yōu)先級表2-3給出Python的運算符優(yōu)先級,從最低的優(yōu)先級(最松散地結(jié)合)到最高的優(yōu)先級(最緊密地結(jié)合)。這意味著在一個表達(dá)式中,如果沒有括號,Python會首先計算表中較下面的運算符,然后在再計算列在表上部的運算符。建議使用圓括號來對運算符和操作數(shù)進(jìn)行分組,以便能夠明確地指出運算的先后順序,使程序盡可能地易讀。運算符描述or布爾“或”and布爾“與”notx布爾“非”表2-3運算符優(yōu)先級2.1python基本概念③計算順序默認(rèn)地,運算符優(yōu)先級表決定了哪個運算符在別的運算符之前計算。具有相同優(yōu)先級的運算符按照從左向右的順序計算。通??梢允褂脠A括號改變計算次序,例如,在表達(dá)式12+3*4中乘法先進(jìn)行運算,而表達(dá)式(12+3)*4中,加先進(jìn)行運算。2.1python基本概念④字符串的運算字符串是程序中經(jīng)常使用的元素,字符串的運算也很多,包括連接兩個字符串,取一個字符串中的一部分,稱為取子字符串,大小寫轉(zhuǎn)換,字符串與數(shù)值的轉(zhuǎn)換等。A字符串連接python中可使用+進(jìn)行字符串的連接操作。其實在實際應(yīng)用中需要使用字符串連續(xù)相加是很少的,更多的操作是幾個字符串的連接,當(dāng)有這樣的需求時,使用+操作符其實是最快的方式。

s0="Python"s1='C++'s2=s0+""+s1則S2的值為:'PythonC++'2.1python基本概念B取部分字符串

<字符串名>[<起始位置>:<終止位置>:<步長>]

得到從<起始位置>開始,間隔<步長>,到<終止位置>前一個字符結(jié)束的字符串。<起始位置>可省略,表示從起始位置為0。<終止位置>可省略,表示從終止位置為末尾。<步長>省略表示步長為1。例如:f='abcdefghijklmnopqrstuvwxyz'則f[5]的值為'f'f[0:10:2]的值為'acegi'f[0:10:2]的值為'acegi'f[0:10]的值為'abcdefghij'f[:10]的值為'abcdefghij'f[10:]的值為'klmnopqrstuvwxyz'len(f)#字符串的長度,本例結(jié)果為262.1python基本概念C其他的字符串處理函數(shù)其他的字符串處理函數(shù)還有:ord('a')#返回字符的ASCII的十進(jìn)制值chr(97)#返回整數(shù)對應(yīng)的字符D庫中的字符串處理函數(shù)上面的字符串處理函數(shù)可以直接使用,而要使用字符串的大小寫轉(zhuǎn)換、查找等功能,需要引入string庫,方法是在程序開頭寫“importstring”,例如:importstringf='abcdefghijklmnopqrstuvwxyz'#定義一個字符串f.upper()#轉(zhuǎn)換為大寫,不改變ff.find('f')#返回f的索引值(即在字符串中從0開始的序號)f.replace('b','boy')#返回b被boy替換的字符串,不改變f2.2序列和基本語句⑴列表列表是Python中最基本的數(shù)據(jù)結(jié)構(gòu),列表是最常用的Python數(shù)據(jù)類型,列表的數(shù)據(jù)項不需要具有相同的類型。列表中的每個元素都分配一個數(shù)字-它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。列表時對象的有序集合。列表的內(nèi)容可以修改,列表的長度可變。列表的定義:<列表名稱>[<列表項>]其中多個列表項用逗號隔開,它們的類型可以相同,也可以不同,還可以是其列表。例如:date=[2011,2,9,9,54]day=['sun','mon','tue','wed','thi','fri','sat']today=[2011,2,9,"wed"]data=[date,day]2.2序列和基本語句①創(chuàng)建一個列表只要把逗號分隔的不同的數(shù)據(jù)項使用方括號括起來即可。如下所示:

list1=['physics','chemistry',1997,2000];list2=[1,2,3,4,5];list3=["a","b","c","d"];與字符串的索引一樣,列表索引從0開始。列表可以進(jìn)行截取、組合等。2.2序列和基本語句②訪問列表中的值使用下標(biāo)索引來訪問列表中的值,同樣你也可以使用方括號的形式截取字符,如下所示:list1=['physics','chemistry',1997,2000];list2=[1,2,3,4,5,6,7];print"list1[0]:",list1[0]print"list2[1:5]:",list2[1:5]以上實例輸出結(jié)果:list1[0]:physicslist2[1:5]:[2,3,4,5]2.2序列和基本語句③更新列表你可以對列表的數(shù)據(jù)項進(jìn)行修改或更新,你也可以直接改變列表位置上的值,如下所示:Valueavailableatindex2:1997Newvalueavailableatindex2:2001list=['physics','chemistry',1997,2000];print"Valueavailableatindex2:"printlist[2];list[2]=2001;print"Newvalueavailableatindex2:"printlist[2];2.2序列和基本語句⑤Python列表腳本操作符列表對+和*的操作符與字符串相似。+號用于組合列表,*號用于重復(fù)列表。如下:

表2-4:Python列表腳本操作符Python表達(dá)式結(jié)果描述len([1,2,3])3長度[1,2,3]+[4,5,6][1,2,3,4,5,6]組合['Hi!']*4['Hi!','Hi!','Hi!','Hi!']重復(fù)3in[1,2,3]True元素是否存在于列表中2.2序列和基本語句⑥Python列表截取Python的列表截取與字符串操作類型,如下所示:列表為:L=['a','b','c'],進(jìn)行截取操作:Python表達(dá)式結(jié)果描述L[2]'c'讀取列表中第三個元素L[-2]'b'讀取列表中倒數(shù)第二個元素L[1:]['b','c']從第二個元素開始截取列表2.2序列和基本語句函數(shù)名描述cmp(list1,list2)比較兩個列表的元素len(list)列表元素個數(shù)max(list)返回列表元素最大值min(list)返回列表元素最小值list(seq)將元組轉(zhuǎn)換為列表⑦Python列表操作的函數(shù)和方法列表操作包含以下函數(shù):2.2序列和基本語句列表操作包含以下方法:列表操作方法描述list.append(obj)在列表末尾添加新的對象list.count(obj)統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù)list.extend(seq)在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)list.index(obj)從列表中找出某個值第一個匹配項的索引位置list.insert(index,obj)將對象插入列表list.pop(obj=list[-1])移除列表中的一個元素(默認(rèn)最后一個元素),并且返回該元素的值list.remove(obj)移除列表中某個值的第一個匹配項list.reverse()反向列表中元素list.sort([func])對原列表進(jìn)行排序2.2序列和基本語句#useoftuple#filename:tuple.pygarden=("BirdofParadise","rose","tulip","lotus","olive","Sunflower")print('Numberofflowersinthegardenis',len(garden))i=2;print('flower',i,'is',garden[i-1])new_garden=('Phlox','PeachBlossom',garden)i=1;print('flower',i,'is',garden[i-1])C:\Python2.71>pythontuple.pyNumberofflowersinthegardenis6flower2isroseflower1isBirdofParadise(2)元組元組和列表十分類似,只不過元組和字符串一樣是不可變的,即不能修改元組。元組通過圓括號中用逗號分割的項目定義。當(dāng)一組數(shù)據(jù),只使用,不修改時使用元組。元組的使用與列表相同,只是不能修改、刪除、增加其元素。例如:

運行結(jié)果如下:2.2序列和基本語句運算格式/舉例說明/結(jié)果T1()空元組T2=(2011,)有一項的元組T3=(2011,2,9,19,54)5項,整數(shù)元組,索引號0-4T4=('sun',('mon','tue','wed'))嵌套的元組T3[i],T4[i][j]索引,T3[1]的值為2,T4[1][1]的值為'tue'T3[i:j]分片,取i到j(luò)-1的項Len(T3)求元組的長度T3+T4合并T3*3重復(fù),T3重復(fù)3次forxinT3循環(huán),x取T3中的每個成員執(zhí)行循環(huán)體19inT319是否是L2的成員元組的運算如表2-8所示:元組與列表的最大不同:一是定義時用一對圓括號,二是內(nèi)容不能修改。

2.2序列和基本語句⑶字典字典是無序的對象的集合,通過鍵進(jìn)行操作。類似于通訊錄,通過姓名來查找電話、地址等信息,則姓名就是鍵。字典要求一定要沒有同名的人。

字典的定義為:<字典名>={鍵1:值2,鍵2:值2,鍵3:值3,…}其中,鍵1,鍵2,鍵3不相同,值可以是任何類型的數(shù)據(jù),可以是列表或元組。注意,字典定義中使用的是大括號,項通過逗號隔開,每個項有鍵部分和值部分,鍵和值之間用冒號隔開。只可使用簡單的對象作為鍵,而且不能改變,但可以用不可變或可變的對象作為字典的值。例如:2.2序列和基本語句#useofdictionaries#filename:dict.pyaddress1={'zhang':'larry@',

'wang':'wang@','lily':'lily@',

'sam':'sam@'}print('mailofzhang',address1['zhang'])address2={'zhang':['larry@','shaanxi'],

'wang':['wang@','beijing'],

'lily':['lily@','shanghai'],'sam':['sam@','hubei']}print('mailoflily',address2['lily'][0])print('provinceoflily',address2['lily'][0])運行結(jié)果如下:C:\Python2.7>pythondict.pymailofzhanglarry@mailoflilylily@provinceoflilylily@2.2序列和基本語句字典的操作如下:運算格式/舉例說明/結(jié)果d1={}空字典d2={'class':'jianhuan','year':'2011'}有兩項的字典d3={'xjtu':{'class':'huagong','year':'2011'}}字典的嵌套d2['class'],d3['xjtu']['class']按鍵使用字典d2.keys()獲得鍵的列表d2.values()獲得值的列表len(d2)求字典的長度d2['year']=2020添加或改變字典的值deld2['year']刪除鍵2.2序列和基本語句①創(chuàng)建字典

Python字典是另一種可變?nèi)萜髂P?,且可存儲任意類型對象,如字符串、?shù)字、元組等其他容器模型。

可以創(chuàng)建詞典:dict1={'abc':456}

dict2={'abc':123,98.6:37}每個鍵與值用冒號隔開(:),每對用逗號,每對用逗號分割,整體放在花括號中({})。

鍵必須獨一無二,但值則不必。值可以取任何數(shù)據(jù)類型,但必須是不可變的,如字符串,數(shù)或元組。2.2序列和基本語句②訪問字典的值

把相應(yīng)的鍵放入熟悉的方括弧,如下實例:dict={'Name':'Zara','Age':7,'Class':'First'}

print"dict['Name']:",dict['Name']

print"dict['Age']:",dict['Age']2.2序列和基本語句③修改字典

向字典添加新內(nèi)容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下實例:

dict={'Name':'Zara','Age':7,'Class':'First'}

dict['Age']=8;#updateexistingentry

dict['School']="DPSSchool";#Addnewentry

print"dict['Age']:",dict['Age']

print"dict['School']:",dict['School']2.2序列和基本語句④刪除字典元素能刪單一的元素也能清空字典,清空只需一項操作。顯示刪除一個字典用del命令,如下實例:dict={'Name':'Zara','Age':7,'Class':'First'}

deldict['Name'];#刪除鍵是'Name'的條目

dict.clear()

#清空詞典所有條目

deldict

#刪除詞典

print"dict['Age']:",dict['Age']

print"dict['School']:",dict['School']

2.2序列和基本語句⑤字典鍵的特性

字典值可以沒有限制地取任何python對象,既可以是標(biāo)準(zhǔn)的對象,也可以是用戶定義的,但鍵不行。但是兩個重要的點需要記?。?/p>

A不允許同一個鍵出現(xiàn)兩次。創(chuàng)建時如果同一個鍵被賦值兩次,后一個值會被記住,如下所示:

dict={'Name':'Zara','Age':7,'Name':'Manni'}

print"dict['Name']:",dict['Name']以上實例輸出結(jié)果:

dict['Name']:

ManniB鍵必須不可變,所以可以用數(shù),字符串或元組充當(dāng),所以用列表就不行,如下實例:dict={['Name']:'Zara','Age':7}

print"dict['Name']:",dict['Name']以上實例輸出結(jié)果:Traceback(mostrecentcalllast):

File"test.py",line3,in<module>

dict={['Name']:'Zara','Age':7};

TypeError:listobjectsareunhashable2.2序列和基本語句⑥字典內(nèi)置函數(shù)和方法字典操內(nèi)置函數(shù)描述cmp(dict1,dict2)比較兩個字典元素len(dict)計算字典元素個數(shù),即鍵的總數(shù)str(dict)輸出字典可打印的字符串表示type(variable)返回輸入的變量類型,如果變量是字典就返回字典類型字典內(nèi)置方法描述radiansdict.clear()刪除字典內(nèi)所有元素radiansdict.copy()返回一個字典的淺復(fù)制radiansdict.fromkeys創(chuàng)建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應(yīng)的初始值radiansdict.get(key,default=None)返回指定鍵的值,若值不在字典返回default值radiansdict.has_key(key)如果鍵在字典dict里返回true,否則返回falseradiansdict.items()以列表返回可遍歷的(鍵,值)元組數(shù)組radiansdict.keys()以列表返回一個字典所有的鍵radiansdict.setdefault(key,default=None)和get()類似,但如果鍵不已經(jīng)存在于字典中,將會添加鍵并將值設(shè)為defaultradiansdict.update(dict2)把字典dict2的鍵/值對更新到dict里radiansdict.values()以列表返回字典中的所有值2.2序列和基本語句字典的操作如下:運算格式/舉例說明/結(jié)果d1={}空字典d2={'class':'jianhuan','year':'2011'}有兩項的字典d3={'xjtu':{'class':'huagong','year':'2011'}}字典的嵌套d2['class'],d3['xjtu']['class']按鍵使用字典d2.keys()獲得鍵的列表d2.values()獲得值的列表len(d2)求字典的長度d2['year']=2020添加或改變字典的值deld2['year']刪除鍵2.2序列和基本語句⑷基本語句①條件選擇語句Python的if語句的功能跟其他語言的非常相似,都是用來判定給出的條件是否滿足,然后根據(jù)判斷的結(jié)果(即真或假)決定是否執(zhí)行給出的操作。If語句是一種單選結(jié)構(gòu),它選擇的是做與不做。它是由三部分組成:關(guān)鍵字if本身、測試條件真假的表達(dá)式(我們簡稱為條件表達(dá)式)和表達(dá)式結(jié)果為真(即表達(dá)式的值為非零)時要執(zhí)行的代碼。If語句的語法形式如下所示:if語句用來檢驗一個條件,如果<條件>為真,我們運行一塊語句(稱為if-塊),否則我們處理另外一塊語句(稱為else-塊)。else從句是可選的。

具體格式如下:if<條件>:<if塊>else:<else塊>2.2序列和基本語句②while循環(huán)語句while語句的功能是,當(dāng)給定的條件表達(dá)式為真時,重復(fù)執(zhí)行循環(huán)體(即內(nèi)嵌的語句),直到條件為假時才退出循環(huán),并執(zhí)行循環(huán)體后面的語句。while語句的語法形式如下所示:while<條件>:<循環(huán)體>舉例:whilei<10:printii=i+1在循環(huán)中,<條件>后有一個冒號,<循環(huán)體>要使用縮進(jìn)的格式。While語句的功能是黨<條件>成立(為真)時,執(zhí)行循環(huán)體,然后再次檢驗<條件>,如果成立,再次執(zhí)行循環(huán)體,直到<條件>不再成立,然后執(zhí)行后面的程序。2.2序列和基本語句③for循環(huán)for是用來循環(huán)的,是從某個對象那里依次將元素讀取出來。for<循環(huán)變量>in<序列>:<循環(huán)體>2.2序列和基本語句names=['Michael','Bob','Tracy']scores=[95,75,85]>>>d={'Michael':95,'Bob':75,'Tracy':85}>>>d['Michael']95④使用dict和set首先我們來看一下dict,Python內(nèi)置了字典:dict的支持,在其他語言中也稱為map,使用鍵-值(key-value)存儲,具有極快的查找速度。舉個例子,假設(shè)要根據(jù)同學(xué)的名字查找對應(yīng)的成績,如果用list實現(xiàn),需要兩個list:給定一個名字,要查找對應(yīng)的成績,就先要在names中找到對應(yīng)的位置,再從scores取出對應(yīng)的成績,list越長,耗時越長。如果用dict實現(xiàn),只需要一個“名字”-“成績”的對照表,直接根據(jù)名字查找成績,無論這個表有多大,查找速度都不會變慢。用Python寫一個dict如下:2.2序列和基本語句把數(shù)據(jù)放入dict的方法,除了初始化時指定外,還可以通過key放入::>>>d['Adam']=67>>>d['Adam']67由于一個key只能對應(yīng)一個value,所以,多次對一個key放入value,后面的值會把前面的值沖掉:>>>d['Jack']=90>>>d['Jack']90如果key不存在,dict就會報錯:>>>d['Thomas']Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>KeyError:'Thomas'2.2序列和基本語句要避免key不存在的錯誤,有兩種辦法:A通過in判斷key是否存在:>>>'Thomas'indFalseB通過dict提供的get方法如果key不存在,可以返回None,或者自己指定的value:>>>d.get('Thomas')>>>d.get('Thomas',-1)-12.2序列和基本語句要刪除一個key,用pop(key)方法,對應(yīng)的value也會從dict中刪除:>>>d.pop('Bob')75>>>d{'Michael':95,'Tracy':85}

2.2序列和基本語句dict內(nèi)部存放的順序和key放入的順序是沒有關(guān)系的,和list比較,dict有以下幾個特點:A查找和插入的速度極快,不會隨著key的增加而增加;B需要占用大量的內(nèi)存,內(nèi)存浪費多。C查找和插入的時間隨著元素的增加而增加;D占用空間小,浪費內(nèi)存很少。2.2序列和基本語句Set和dict類似,也是一組key的集合,但不存儲value。由于key不能重復(fù),所以,在set中,沒有重復(fù)的key。要創(chuàng)建一個set,需要提供一個list作為輸入集合:>>>s=set([1,2,3])>>>sset([1,2,3])重復(fù)元素在set中自動被過濾:>>>s=set([1,1,2,2,3,3])>>>sset([1,2,3])2.2序列和基本語句通過add(key)方法可以添加元素到set中,可以重復(fù)添加,但不會有效果>>>s.add(4)>>>sset([1,2,3,4])>>>s.add(4)>>>sset([1,2,3,4])通過remove(key)方法可以刪除元素:>>>s.remove(4)>>>sset([1,2,3])2.3函數(shù)和模塊很多時候,Python程序中的語句都會組織成函數(shù)的形式。函數(shù)就是完成特定功能的一個語句組,這組語句可以作為一個單位使用,并且給它取一個名字,這樣,我們就可以通過函數(shù)名在程序的不同地方多次執(zhí)行(這通常叫做函數(shù)調(diào)用),卻不需要在所有地方都重復(fù)編寫這些語句。另外,每次使用函數(shù)時可以提供不同的參數(shù)作為輸入,以便對不同的數(shù)據(jù)進(jìn)行處理;函數(shù)處理后,還可以將相應(yīng)的結(jié)果反饋給我們。2.3函數(shù)和模塊⑴函數(shù)①定義函數(shù)當(dāng)我們自己定義一個函數(shù)時,通常使用def語句,其語法形式如下所示:def<函數(shù)名>(<形參表>):<函數(shù)體>其中,函數(shù)名可以是任何有效的Python標(biāo)識符;參數(shù)列表是調(diào)用該函數(shù)時傳遞給它的值,可以由多個、一個或零個參數(shù)組成,當(dāng)有多個參數(shù)時各個參數(shù)由逗號分隔;圓括號是必不可少的,即使沒有參數(shù)也不能沒有它;函數(shù)體是函數(shù)每次被調(diào)用時執(zhí)行的代碼,可以由一個語句或多個語句組成,函數(shù)體一定要注意縮進(jìn)。此外,有時候會忘記圓括號后面的冒號,這會導(dǎo)致語法錯誤。2.3函數(shù)和模塊⑴函數(shù)①定義函數(shù)當(dāng)我們自己定義一個函數(shù)時,通常使用def語句,其語法形式如下所示:def<函數(shù)名>(<形參表>):<函數(shù)體>其中,函數(shù)名可以是任何有效的Python標(biāo)識符;參數(shù)列表是調(diào)用該函數(shù)時傳遞給它的值,可以由多個、一個或零個參數(shù)組成,當(dāng)有多個參數(shù)時各個參數(shù)由逗號分隔;圓括號是必不可少的,即使沒有參數(shù)也不能沒有它;函數(shù)體是函數(shù)每次被調(diào)用時執(zhí)行的代碼,可以由一個語句或多個語句組成,函數(shù)體一定要注意縮進(jìn)。此外,有時候會忘記圓括號后面的冒號,這會導(dǎo)致語法錯誤。2.3函數(shù)和模塊②調(diào)用函數(shù)Python內(nèi)置了很多有用的函數(shù),我們可以直接調(diào)用。要調(diào)用一個函數(shù),需要知道函數(shù)的名稱和參數(shù),比如求絕對值的函數(shù)abs,只有一個參數(shù)??梢灾苯訌腜ython的官方網(wǎng)站查看文檔,也可以在交互式命令行通過help(abs)查看abs函數(shù)的幫助信息。調(diào)用abs函數(shù):>>>abs(100)100>>>abs(-20)20>>>abs(12.34)12.342.3函數(shù)和模塊③數(shù)據(jù)類型轉(zhuǎn)換Python內(nèi)置的常用函數(shù)還包括數(shù)據(jù)類型轉(zhuǎn)換函數(shù),比如int()函數(shù)可以把其他數(shù)據(jù)類型轉(zhuǎn)換為整數(shù):>>>int('123')123>>>int(12.34)12>>>float('12.34')12.34>>>str(1.23)'1.23'>>>unicode(100)u'100'>>>bool(1)True>>>bool('')False2.3函數(shù)和模塊④自定義函數(shù)在Python中,定義一個函數(shù)要使用def語句,依次寫出函數(shù)名、括號、括號中的參數(shù)和冒號:,然后,在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用return語句返回。我們以自定義一個求絕對值的my_abs函數(shù)為例:defmy_abs(x):ifx>=0:returnxelse:return-x

2.3函數(shù)和模塊A空函數(shù)如果想定義一個什么事也不做的空函數(shù),可以用pass語句:defnop():passB參數(shù)檢查調(diào)用函數(shù)時,如果參數(shù)個數(shù)不對,Python解釋器會自動檢查出來,并拋出TypeError:>>>my_abs(1,2)Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:my_abs()takesexactly1argument(2given)2.3函數(shù)和模塊C返回多個值函數(shù)可以返回多個值,比如在游戲中經(jīng)常需要從一個點移動到另一個點,給出坐標(biāo)、位移和角度,就可以計算出新的新的坐標(biāo):importmathdefmove(x,y,step,angle=0):nx=x+step*math.cos(angle)ny=y-step*math.sin(angle)returnnx,ny2.3函數(shù)和模塊⑤函數(shù)的參數(shù)

定義函數(shù)的時候,我們把參數(shù)的名字和位置確定下來,函數(shù)的接口定義就完成了。對于函數(shù)的調(diào)用者來說,只需要知道如何傳遞正確的參數(shù),以及函數(shù)將返回什么樣的值就夠了,函數(shù)內(nèi)部的復(fù)雜邏輯被封裝起來,調(diào)用者無需了解。Python的函數(shù)定義非常簡單,但靈活度卻非常大。除了正常定義的必選參數(shù)外,還可以使用默認(rèn)參數(shù)、可變參數(shù)和關(guān)鍵字參數(shù),使得函數(shù)定義出來的接口,不但能處理復(fù)雜的參數(shù),還可以簡化調(diào)用者的代碼。2.3函數(shù)和模塊默認(rèn)參數(shù)可以簡化函數(shù)的調(diào)用。設(shè)置默認(rèn)參數(shù)時,有幾點要注意:(1)必選參數(shù)在前,默認(rèn)參數(shù)在后,否則Python的解釋器會報錯。(2)在設(shè)置默認(rèn)參數(shù)時,當(dāng)函數(shù)有多個參數(shù)時,把變化大的參數(shù)放前面,變化小的參數(shù)放后面。變化小的參數(shù)就可以作為默認(rèn)參數(shù)。使用默認(rèn)參數(shù)最大的好處是能降低調(diào)用函數(shù)的難度。舉個例子,假設(shè)要在屏幕上畫一個圓,由于畫圓只需要確定圓心坐標(biāo)(x,y)和半徑r就可以了,所以,我們假設(shè)可以這樣調(diào)用該函數(shù):>>>x,y=0,0>>>r=20>>>draw_circle(x,y,r)2.3函數(shù)和模塊⑥常用函數(shù)type(<表達(dá)式>)獲得表達(dá)式的數(shù)據(jù)類型int(‘34’)轉(zhuǎn)換為整數(shù)int('1101',2)將二進(jìn)制字符串轉(zhuǎn)換為十進(jìn)制整數(shù)float(’43.4’)轉(zhuǎn)換為浮點數(shù)str(34)轉(zhuǎn)換為字符串bin(43)將十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)math..log10(10)以10為底的對數(shù)math.sin(math.pi/2)正弦函數(shù),單位弧度math.pi常數(shù)pi,3.141592653589793math.exp(8)e的8次冪math.pow(32,4)32的4次冪math.sqrt(2)2開平方math.cos(math.pi/3)余弦函數(shù)math.fabs(-32.90)求絕對值math.factorial(n)求n的階乘2.3函數(shù)和模塊⑦缺省參數(shù)

在定義函數(shù)時,我們可以用賦值符號給某些形參指定默認(rèn)值,這樣當(dāng)調(diào)用該函數(shù)的時候,如果調(diào)用方?jīng)]有為該參數(shù)提供值的話,則使用默認(rèn)值;如果調(diào)用該函數(shù)的時候為該參數(shù)提供了值的話,則使用調(diào)用方提供的值——像這樣的參數(shù)我們稱之為缺省參數(shù)。2.3函數(shù)和模塊⑧局部變量和全局變量

在Python中的任何變量都有其特定的作用域,比如在一個函數(shù)中定義的變量一般只能在該函數(shù)內(nèi)部使用,這些只能在程序的特定部分使用的變量我們稱之為局部變量;比如在一個文件頂部定義的變量可以供該文件中的任何函數(shù)調(diào)用,這些可以為整個程序所使用的變量稱為全局變量。

上面是從空間的角度來考察變量的局部性和全局性,如果從時間的角度來看,不妨簡單地認(rèn)為在程序運行的整個過程中,全局變量一直占據(jù)著內(nèi)存,并且它的值可以供所有函數(shù)訪問;而局部變量則是只有在其所在函數(shù)被調(diào)用時才給它分配內(nèi)存,當(dāng)函數(shù)返回時,其所占內(nèi)存就會被釋放,所以它只能供其所在的函數(shù)所訪問——換句話說,當(dāng)某個函數(shù)退出時,其局部變量原先所占的內(nèi)存將被分配給其它函數(shù)的局部變量。2.3函數(shù)和模塊⑵模塊

模塊基是一個包含了已定義的函數(shù)和變量的文件。為了在其他程序中重用模塊,模塊的文件名必須以.py為擴展名。在python里模塊有另外

一個含義就是名字空間的意思,名字空間從字面意思理解就是存放名字的地方,我們把模塊里面定義的方法或者變量的話,當(dāng)做模塊的屬性,在其他的地方調(diào)用模塊的屬性或者方法的話,可以直接通過模塊名.屬性名或者方法名來調(diào)用。2.3函數(shù)和模塊模塊有下面的幾種特性:

A模塊語句在第一次導(dǎo)入的時候就執(zhí)行了。在代碼的任何地方導(dǎo)入一個模塊,它都會生成一個空對象,然后從頭到尾執(zhí)行模塊里面的語句。比如你在模塊里面定義了:def

語句,或者賦值語句,系統(tǒng)都會先生成好模塊對象的屬性,然后存儲到模塊的名字空間里。

B如果你想查看模塊里面的屬性的話,可以通過dir()方法。

C模塊里的變量和函數(shù)里的變量不太一樣,模塊里的變量是在模塊第一次導(dǎo)入以后就可以使用了,而函數(shù)里的變量是在函數(shù)運行的時候才能夠使用。2.3函數(shù)和模塊②模塊的調(diào)用python有三種調(diào)用模塊的方法。AimportmodnameBfrommodnameimportfuncnamefrommodnameimportfa,fb,fc

或者

frommodnameimport*

C內(nèi)建函數(shù)__import__()2.3函數(shù)和模塊③作用域Python是靜態(tài)作用域語言,盡管它自身是一個動態(tài)語言。也就是說,在Python中變量的作用域是由它在源代碼中的位置決定的,這與C有些相似,但是Python與C在作用域方面的差異還是非常明顯的。2.3函數(shù)和模塊④安裝第三方模塊

在Python中,安裝第三方模塊,是通過setuptools這個工具完成的。Python有兩個封裝了setuptools的包管理工具:easy_install和pip。目前官方推薦使用pip。ApipinstallBeasy_installClicktoeditcompanyslogan.ThankYou!二、分析編本編主要內(nèi)容Python數(shù)據(jù)獲取與數(shù)據(jù)預(yù)處理

利用Python進(jìn)行數(shù)據(jù)分析3Python數(shù)據(jù)獲取與數(shù)據(jù)預(yù)處理(1)從鍵盤、文本文件、Office文件獲取數(shù)據(jù)每種語言獲取數(shù)據(jù)最基本的方式往往都是通過用戶輸入從鍵盤獲取,Python亦不例外。這里我們將介紹兩個很有用的內(nèi)置函數(shù)即raw_input和input。①從鍵盤獲取數(shù)據(jù)A用raw_input函數(shù)獲取數(shù)據(jù)3.1Python數(shù)據(jù)獲取>>>line=raw_input()GalapagosIsland>>>printlineGalapagosIsland>>>line=raw_input()123>>>printline123如果您希望用戶輸入一個數(shù)字,那么就必須用int或float將得到的字符串轉(zhuǎn)換為所需的類型:>>>value=raw_input()123>>>value=int(value)>>>printvalue*22463.1Python數(shù)據(jù)獲取而含有字母或下劃線的字符串是無法用int或float轉(zhuǎn)換成數(shù)字類型的:>>>value=float(raw_input())Galapagos

Traceback(mostrecentcalllast):File"<pyshell#13>",line1,in<module>value=float(raw_input())ValueError:couldnotconvertstringtofloat:Galapagos3.1Python數(shù)據(jù)獲取此外,raw_input還可以接收一個字符串參數(shù),該參數(shù)將用于對用戶進(jìn)行提示:>>>name=raw_input('Pleaseenteraname:')Pleaseenteraname:Darwin>>>printnameDarwin3.1Python數(shù)據(jù)獲取B用input函數(shù)獲取數(shù)據(jù)raw_input是把讀入的數(shù)據(jù)轉(zhuǎn)換成字符串;而input是把讀入的數(shù)據(jù)默認(rèn)為Python表達(dá)式。其實,這兩個函數(shù)均能接收字符串,但raw_input直接讀取控制臺的輸入(任何類型的輸入它都可以接收)。而對于input,直接輸入字符串會引發(fā)報錯。3.1Python數(shù)據(jù)獲取>>>line=input()GalapagosIslandTraceback(mostrecentcalllast):File"<pyshell#18>",line1,in<module>line=input()

File"<string>",line1GalapagosIslandSyntaxError:unexpectedEOFwhileparsing>>>line=input()'GalapagosIsland'>>>printlineGalapagosIsland3.1Python數(shù)據(jù)獲取A用open函數(shù)獲取文件內(nèi)容為了從一個文件中讀取數(shù)據(jù),我們必須先將其打開(利用Python的內(nèi)置函數(shù)open):代碼如下:其中:第一個參數(shù)是文件名稱,包括路徑;第二個參數(shù)是打開的模式mode'r':只讀(缺省。如果文件不存在,則拋出錯誤)'w':只寫(如果文件不存在,則自動創(chuàng)建文件)'a':附加到文件末尾'r+':讀寫如果需要以二進(jìn)制方式打開文件,需要在mode后面加上字符"b",比如"rb""wb"等②從文本文件獲取數(shù)據(jù)f=open("d:\test.txt","r")3.1Python數(shù)據(jù)獲取讀取數(shù)據(jù):f.read(size)參數(shù)size表示讀取的數(shù)量,可以省略。如果省略size參數(shù),則表示讀取文件所有內(nèi)容。f.readline()讀取文件一行的內(nèi)容f.readlines()讀取所有的行到數(shù)組里面[line1,line2,...lineN]。在避免將所有文件內(nèi)容加載到內(nèi)存中,這種方法常常使用,便于提高效率。3.1Python數(shù)據(jù)獲取示例:上面的代碼則會把第一行的數(shù)據(jù)打印在編譯器中,如果想要打印出所有的數(shù)據(jù),則需要使用readlines()。3.1Python數(shù)據(jù)獲取file=open('C:\Test\data0102.txt','r')line=file.readline()printlinefile.close()file=open('C:\Test\data0102.txt','r')lines=file.readlines()forlineinlines:line=line.strip()printlinefile.close()在執(zhí)行完畢之后,為了安全起見,最好還是給打開的文件對象指定一個名字,這樣在完成操作之后可以迅速關(guān)閉文件,防止一些無用的文件對象占用內(nèi)存。除非要讀取的文件非常巨大,不然一次性讀出所有內(nèi)容放進(jìn)內(nèi)存并進(jìn)一步處理是最快和最方便的辦法。3.1Python數(shù)據(jù)獲取B用linecache模塊獲取指定行的內(nèi)容與open函數(shù)不同,使用linecache模塊可以進(jìn)行緩存優(yōu)化,日常編程中涉及讀取大文件,可以提高讀取文件的效率。如果我們要從一個文件中讀取其第2行數(shù)據(jù):引入linecache模塊,該模塊允許使用getline(filename,lineno)函數(shù)從任意文件里得到任意的行;使用getlines(filename)函數(shù)從文件中得到全部內(nèi)容,輸出為列表格式。使用clearcache()函數(shù)清除緩存。3.1Python數(shù)據(jù)獲取importlinecacheprintlinecache.getline('C:\Test\data0102.txt',2)③從Microsoft軟件的文檔中獲取數(shù)據(jù)A從MicrosoftWord獲取數(shù)據(jù)要先下載安裝win32com包,下載地址:/projects/pywin32/files/;其次,加載包,創(chuàng)建對象實例;再次,打開并輸出Word文件(例如Word文件010301.doc);最后,關(guān)閉文檔。代碼如下:fromwin32comimportclient#從win32com包引入client包word=client.Dispatch('Word.Application')#創(chuàng)建對象實例doc=word.Documents.Open(r'C:\Test\data010301.doc')#打開printdoc.content#打印doc.Close()#關(guān)閉word.Quit()3.1Python數(shù)據(jù)獲取B從MicrosoftExcel獲取數(shù)據(jù)從MicrosoftExcel獲取數(shù)據(jù),有多種途徑和方式,我們將分別介紹以下4種:1、查看所有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論