Python的更多的方法_第1頁(yè)
Python的更多的方法_第2頁(yè)
Python的更多的方法_第3頁(yè)
Python的更多的方法_第4頁(yè)
Python的更多的方法_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Python的列表數(shù)據(jù)類型包含更多的方法list.append(x)把一個(gè)元素添加到列表的結(jié)尾。list.extend(L)將一個(gè)給定列表中的所有元素都添加到另一個(gè)列表中。list.insert(i, x)在指定位置插入一個(gè)元素。第一個(gè)參數(shù)是準(zhǔn)備插入到其前面的那個(gè)元素的索 引,例如 a.insert(0, x)會(huì)插入到整個(gè)列表之前,而 a.insert(len(a), x)相當(dāng)于 a.append(x)。list.remove(x)刪除列表中值為 x的第一個(gè)元素。如果沒(méi)有這樣的元素,就會(huì)返回一個(gè)錯(cuò)誤。list.pop(i)從列表的指定位置刪除元素,并將其返回。如果沒(méi)有指定索引,a.pop()返

2、回最后一個(gè)元素。元素隨即從鏈表中被刪除。(方法中i兩邊的方括號(hào)表示這個(gè)參數(shù)是可選的,而不是要求你輸入一對(duì)方括號(hào),這個(gè)經(jīng)常會(huì)在Python庫(kù)參考手冊(cè)中遇到這樣的標(biāo)記。)list.index(x)返回列表中第一個(gè)值為 x的元素的索引。如果沒(méi)有匹配的元素就會(huì)返回一個(gè)錯(cuò) 誤。list.count(x)返回x在鏈表中出現(xiàn)的次數(shù)。list.sort(cmp=None, key=None, reverse=False)對(duì)列表中的元素進(jìn)行排序(參數(shù)可以用來(lái)自定 義排序方法,參考 sorted()的更詳細(xì)的解釋)。list.reverse()就地倒排鏈表中的元素del listi有個(gè)方法可以從列表中按給定的索引

3、而不是值來(lái)刪除一個(gè)子項(xiàng):del語(yǔ)句。它不同于有返回值的 pop()方法。語(yǔ)句del還可以從列表中刪除切片或清空整個(gè)列表(我們以前介紹過(guò)一個(gè)方法是將空列表賦值給列表的切片)。dict()構(gòu)造函數(shù)可以直接從key-value對(duì)中創(chuàng)建字典:dict(sape, 4139), (guido, 4127), (jack, 4098)dict.fromkeys(a,b,0)dict(zip(a,b,c,1,2,3)k:v for (k,v) in zip(a,b,c,1,2,3)x: x*2 for x in (2, 4, 6)D = dict(a=1,b=2,c=3)c:c*4 for c in Joi

4、nQuantc.lower():c*4+! for c in JoinQuant元組任意無(wú)符號(hào)的對(duì)象,以逗號(hào)隔開(kāi),默認(rèn)為元組(print abc, -4.24e93, 18+6.6j, xyzx, y = 1,2;)元組數(shù)據(jù)類型包含更多的方法:tup.index(x, start, stop)返回元組中start到stop索引中第一個(gè)值為x的元素在整個(gè)列表中的索引。如果沒(méi)有匹配的元素就會(huì)返回一個(gè)錯(cuò)誤。tup.count(x) 返回x在元組中出現(xiàn)的次數(shù)。cmp(tuple1, tuple2)比較元組中兩個(gè)元素。len(tuple)計(jì)算元組元素個(gè)數(shù)。max(tuple)返回元組中元素最大值。min

5、(tuple)返回元組中元素最小值。tuple(seq) 將列表轉(zhuǎn)換為元組。元組不提供字符串、列表和字典中的方法。如果相對(duì)元組排序,通常先得將它轉(zhuǎn)換為列表并使其成為一個(gè)可變對(duì)象,才能獲得使用排序方法,或使用 sorted內(nèi)置方法。集合集合(set)是一個(gè)無(wú)序不重復(fù)元素的集?;竟δ馨P(guān)系運(yùn)算和消除重復(fù)元素。比如支持 union( 聯(lián)合),intersection( 交),difference( 差)和 sysmmetric difference( 對(duì)稱差 集)等數(shù)學(xué)關(guān)系運(yùn)算。所有集合方法S.issubset(t) 如果s是t的子集,則返回 True ,否則返回FalseS.issuperse

6、t(t) 如果s是t 的超集,則返回 True ,否則返回FalseS.unoin(t)返回一個(gè)新集合,該集合是s和t的并集,也可用s1|s2,但不能用s1+s2ntersection(t)返回一個(gè)新集合,該集合是s和t的交集,也可用s1&s2S.difference(t)返回一個(gè)新集合,該集合是 s的成員,但不是t的成員,也可用s1-s2S.symmetric_difference(t)對(duì)稱差分是集合的異或,返回一個(gè)新集合,該集合是s或t的成員,但不是s和t共有的成員,也可用s1As2S.copy()返回一個(gè)新集合,該集合是 s的復(fù)制僅適合可變集合S.update(t) 用t中的元素修改s,

7、即s現(xiàn)在包括s或t的成員ntersection update s中的成員是共同屬于 s和t的元素S.difference update s中的成員是屬于 s但不包含在t中的元素S.symmetric difference update s中的成員更新為那些包含在s或t中,但不是 s和t共有的元素S.add(obj)在集合s中添加對(duì)象objS.remove(obj) 從集合s中刪除對(duì)象obj ,如果obj不是集合s中的元素將有錯(cuò)誤S.discard(obj) 如果obj是集合s中的元素,從集合 s中刪除對(duì)象objS.pop()刪除集合s中的任意一個(gè)對(duì)象,并返回它S.clear()刪除集合s中的所

8、有元素集合推導(dǎo)式語(yǔ)法:a = x for x in abracadabra if x not in abc#abc默認(rèn)是集合Python 提供了 for循環(huán)和while循環(huán)(在Python 中沒(méi)有do.while 循環(huán)),for循環(huán)一 般比while計(jì)數(shù)器循環(huán)運(yùn)行得更快break語(yǔ)句,在語(yǔ)句塊執(zhí)行過(guò)程中終止循環(huán),并且跳出整個(gè)循環(huán)continue 語(yǔ)句,在語(yǔ)句塊執(zhí)行過(guò)程中終止當(dāng)前循環(huán),跳出該次循環(huán),執(zhí)行下一次循環(huán)。pass語(yǔ)句,是空語(yǔ)句,是為了保持程序結(jié)構(gòu)的完整性。不做任何事情,一般用做占位語(yǔ)句。循環(huán)else塊,只有當(dāng)循環(huán)正常離開(kāi)時(shí)才會(huì)執(zhí)行(也就是沒(méi)有碰到break語(yǔ)句)If/While/for

9、定義可變參數(shù)和定義list或tuple參數(shù)相比,僅僅在參數(shù)前面加了一個(gè)*號(hào)。在函數(shù)內(nèi)部,參數(shù)numbers接收到的是一個(gè)tuple ,因此,函數(shù)代碼完全不變。但是,調(diào)用該函數(shù)時(shí),可以傳入任意個(gè)參數(shù),包括 0個(gè)參數(shù)。#必選參數(shù),默認(rèn)參數(shù),*表可變參數(shù),*表關(guān)鍵字參數(shù)def func(a, b, c=0, *args, *kw):print a =, a, b =, b, c =, c, args =, args, kw =, kw調(diào)用函數(shù)時(shí)如何傳入可變參數(shù)和關(guān)鍵字參數(shù)的語(yǔ)法:可變參數(shù)既可以直接傳入:func(1,2, 3),又可以先組裝list或tuple ,再通過(guò)*args傳入:func(*(

10、1,2, 3);關(guān)鍵字參數(shù)既可以直接傳入:func(a=1, b=2),又可以先組裝 dict ,再通過(guò)*kw 傳入:func(*a: 1, b: 2)。使用*args和*kw是Python的習(xí)慣寫法,當(dāng)然也可以用其他參數(shù)名,但最好使用習(xí)慣用 法。Python查找名字的規(guī)則是 LGB規(guī)則:大多數(shù)名字引用在三個(gè)作用域中查找:先局部 (Local),次之全局(Global),再次之內(nèi)置(Build-in)。python 使用lambda來(lái)創(chuàng)建匿名函數(shù):lambda 只是一個(gè)表達(dá)式,函數(shù)體比def簡(jiǎn)單很多。lambda的主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊。僅僅能在lambda 表達(dá)式中封裝有限的邏輯

11、進(jìn)去。lambda函數(shù)擁有自己的名字空間,且不能訪問(wèn)自有參數(shù)列表之外或全局名字空間里的參數(shù)。雖然lambda函數(shù)看起來(lái)只能寫一行,卻不等同于C或C+的內(nèi)聯(lián)函數(shù),后者的目的是調(diào)用小函數(shù)時(shí)不占用棧內(nèi)存從而增加運(yùn)行效率。import timestart = time.clock()fib=lambda n,x=0,y=1:x if not n else fib(n-1,y,x+y)print fib(20) |end = time.clock()print read: %f s % (end - start)def fib(num):result=0,1for i in range(num-2):r

12、esult.append(result-2+result-1)return resultprint fib(15)斐波那契數(shù)列:斐波那契數(shù)列由十三世紀(jì)意大利數(shù)學(xué)家斐波那契發(fā)現(xiàn)。數(shù)列中的一系列數(shù)字常被人們稱之為神奇數(shù)奇異數(shù)。具體數(shù)列為:0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , 144 ,233等,從該數(shù)列的第三項(xiàng)數(shù)字開(kāi)始,每個(gè)數(shù)字等于前兩個(gè)相鄰數(shù)字之和。而斐波那契數(shù)列中相鄰兩項(xiàng)之商就接近黃金分割數(shù)0.618 ,與這一數(shù)字相關(guān)的0.191 、0.382 、0.5和0.809 等數(shù)字就構(gòu)成了股市中關(guān)于市場(chǎng)時(shí)間和空間計(jì)算的重要數(shù)字。在金融

13、市場(chǎng)的分析方法中,斐波那契數(shù)字頻頻出現(xiàn)。例如,在波浪理論中,一輪牛市行情可以用1個(gè)上升浪來(lái)表示,也可以用5個(gè)低一個(gè)層次的小浪來(lái)表示,還可繼續(xù)細(xì)分為21個(gè)或89個(gè)小浪;在空間分析體系中,反彈行情的高度通常是前方下降趨勢(shì)幅度的0.382 、0.5、0.618 ;回調(diào)行情通常是前方上升趨勢(shì)的0.382 、0.5和0.618 。一、常見(jiàn)的幾種迭代器迭代器在python 中是以C語(yǔ)言的速度運(yùn)行的,而 while循環(huán)版本則是通過(guò) Python 虛擬 機(jī)運(yùn)行Python 字節(jié)碼的。rangezip可以讓我們使用for循環(huán)來(lái)并行使用多個(gè)序列,zip會(huì)取得一個(gè)或多個(gè)序列為參數(shù),然后返回元組的列表,將這些序列中的

14、并排的元素配成對(duì)。enumerate可以獲得元素和元素的偏移值map map會(huì)對(duì)一個(gè)序列對(duì)象中的每一個(gè)元素應(yīng)用被傳入的函數(shù),并且返回一個(gè)包含所有函數(shù)調(diào)用結(jié)果的一個(gè)列表。filter 基于某一測(cè)試函數(shù)過(guò)濾出一些元素reduce 對(duì)每對(duì)元素都應(yīng)用函數(shù)并運(yùn)行到最后結(jié)果Range: S = abcdefghijkfor i in range(0,len(S),2):print SiS = abcdefghijkfor c in S:2:print cZip: L1 = 1,2,3,4L2 = 5,6,7,8for (x,y) in zip(L1,L2):print (x,y,x+y)#構(gòu)造字典keys

15、 = a,b,cvals = 1,3,5D2 = for (k,v) in zip(keys,vals): D2k=vEnumerate: seasons = Spring, Summer, Fall, Winterdict(enumerate(seasons, start=3)Out1: 3: Spring, 4: Summer, 5: Fall, 6: WinterMap: map(lambda x: x+3),1,2,3,4) Out2: 4, 5, 6, 7Reduce: reduce(lambda x,y:x+y),1,2,3,4) Out3: 10|import operator,

16、functoolsfunctools.reduce(operator.add,2,4,6)Out4: 12列表推導(dǎo)式:列表推導(dǎo)式由包含一個(gè)表達(dá)式的括號(hào)組成,表達(dá)式后面跟隨一個(gè) for子句,之后可以有零 或多個(gè)for或if子句。結(jié)果是一個(gè)列表,由表達(dá)式依據(jù)其后面的for和if子句上下文計(jì)算而來(lái)的結(jié)果構(gòu)成。Eg: (x, y) for x in 1,2,3 for y in 3,1,4 if x != yOut: (1,3), (1,4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)matrix = 1,2, 3, 4,5, 6, 7, 8,9, 10, 11,

17、12list(zip(*matrix)Out: 1,5, 9, 2, 6, 10, 3, 7, 11, 4, 8,12Numpy 庫(kù)數(shù)組的一些屬性:a.ndim #查看行數(shù)a.shape #查看數(shù)組的維數(shù),返回(n,m),其中n為行數(shù),m為列數(shù)。a.dtype #查看元素的類型,比如 32 、numpy.float64Numpy的特殊數(shù)組主要有以下幾種:zeros數(shù)組:全零數(shù)組,元素全為0 ;np.zeros(2,3)ones數(shù)組:全1數(shù)組,元素全為1;np.ones(3,4)empty 數(shù)組:空數(shù)組,元素全近似為0 ;np.empty(3,2)序列數(shù)組:arange 函數(shù):他與Python

18、的range函數(shù)相似,但他屬于Numpy 庫(kù),其參數(shù)依次為:開(kāi)始值、結(jié)束值、步長(zhǎng)。Eg: In 22: np.arange(1,20,5)Out22: array( 1, 6, 11, 16)linspace 函數(shù)創(chuàng)建等差序列數(shù)組,其參數(shù)依次為:開(kāi)始值、結(jié)束值、元素?cái)?shù)量。Eg: In 23: np.linspace(0,2,9)Out23: array( 0. , 0.25, 0.5,0.75, 1. , 1.25, 1.5,1.75, 2.)#bi,j表示什么?b = np.ones(2,3)b1,2 = 9矩陣;矩陣的常用數(shù)學(xué)運(yùn)算有轉(zhuǎn)置(A.T )、乘法(A * B)、求逆(A.I )、解

19、線性方程(solve(A,B)等。PandasSeries: 一維數(shù)組,與 Numpy中的一維array類似。二者與 Python基本的數(shù)據(jù)結(jié)構(gòu) List 也很相近,其區(qū)別是:List中的元素可以是不同的數(shù)據(jù)類型,而 Array和Series中則只允許存儲(chǔ)相同的數(shù)據(jù)類型,這樣可以更有效的使用內(nèi)存,提高運(yùn)算效率。DataFrame:二維的表格型數(shù)據(jù)結(jié)構(gòu)。很多功能與 R中的data.frame類似。可以將DataFrame理解為Series的容器。以下的內(nèi)容主要以DataFrame為主。Panel :三維的數(shù)組,可以理解為DataFrame的容器。DataFrame: eg: dates = pd

20、.date_range(20130101,periods=6)Out6:DatetimeIndex(2013-01-01, 2013-01-02, 2013-01-03, 2013-01-04,2013-01-05,2013-01-06,dtype=datetime64ns, freq=D, tz=None) #df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list(ABCD)查看前幾條數(shù)據(jù):df.head();查看后幾條數(shù)據(jù):df.tail()查看 DataFrame的值:df.values查看 DataFrame的索引

21、:df.index查看 DataFrame的歹U名:df.columns使用describe。函數(shù)對(duì)于數(shù)據(jù)的快速統(tǒng)計(jì)匯總:df.describe()按列對(duì) DataFrame進(jìn)行排序:df.sort(columns=open)選擇數(shù)據(jù):通過(guò)下標(biāo)選取數(shù)據(jù):dfopen df.open(返回一個(gè) Series )dfopen,close (選取多列)dfa:b(起始的索引名稱到結(jié)束索引名稱選取數(shù)據(jù),含 b列)df0:3 (從 0 到 2 ,不含 3 )df,2016-07-05:2016-07-08(返回一個(gè) df )使用標(biāo)簽選取數(shù)據(jù):df.loc行標(biāo)簽,列標(biāo)簽df.loca:b # 選取ab 兩

22、行數(shù)據(jù)d f.loc:,open # 選取 open 列的數(shù)據(jù)df.loc的第一個(gè)參數(shù)是行標(biāo)簽,第二個(gè)參數(shù)為列標(biāo)簽(可選參數(shù),默認(rèn)為所有列標(biāo)簽),兩個(gè)參數(shù)既可以是列表也可以是單個(gè)字符,如果兩個(gè)參數(shù)都為列表則返回的是 DataFrame ,否則,則為Series 。PS : loc 為 location的縮寫。使用位置選取數(shù)據(jù):df.iloc行位置,列位置df.iloc1,1 # 選取第二行,第二列的值,返回的為單個(gè)值df.iloc0,2,: #選取第一行及第三行的數(shù)據(jù)df.iloc0:2,: # 選取第一行到第三行(不包含)的數(shù)據(jù)df.iloc:,1 #選取所有記錄的第二列的值,返回的為一個(gè)

23、Seriesdf.iloc1,: #選取第一行數(shù)據(jù),返回的為一個(gè) SeriesPS : iloc 則為 integer & location 的縮寫更廣義的切片方式是使用.ix,它自動(dòng)根據(jù)給到的索引類型判斷是使用位置還是標(biāo)簽進(jìn)行切片。通過(guò)邏輯指針進(jìn)行數(shù)據(jù)切片:df邏輯條件dfdf.one = 2 # 單個(gè)邏輯條件df(df.one =1 ) & (df.one idxmax計(jì)算能夠獲取到最大值和最小值得索引值quantile計(jì)算樣本的分位數(shù)(0到1)sum值的總和mean值得平均數(shù)median值得算術(shù)中位數(shù)(50%分位數(shù))mad根據(jù)平均值計(jì)算平均絕對(duì)離差var樣本值的方差std樣本值的標(biāo)準(zhǔn)差skew樣本值得偏度(三階矩)kurt樣本值得峰度(

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論