淺析Python語(yǔ)言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些
Python作為一種腳本語(yǔ)言,其要求強(qiáng)制縮進(jìn),使其易讀、美觀,它的數(shù)據(jù)類(lèi)型可以實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換,而不需要像C、Java那樣給變量定義數(shù)據(jù)類(lèi)型,使其編寫(xiě)非常方便簡(jiǎn)單,所以廣受大家的歡迎。
現(xiàn)如今,Python已經(jīng)廣泛的應(yīng)用于數(shù)據(jù)分析、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)等眾多科學(xué)計(jì)算領(lǐng)域。所以既然涉及到科學(xué)計(jì)算,深入了解Python原生提供的數(shù)據(jù)結(jié)構(gòu)是很有必要的,這樣才能在數(shù)據(jù)的海洋中游刃有余、得心應(yīng)手。本文便以此展開(kāi),做一個(gè)歸納整理,方便收藏。
Python
一、序列結(jié)構(gòu)
首先介紹的數(shù)據(jù)結(jié)構(gòu)是序列結(jié)構(gòu),所謂序列,也就是元素順序是很重要的,不同元素順序的序列是不同的序列。Python中含有六種內(nèi)建的序列結(jié)構(gòu),分別是list、tuple、string、unicode、buffer、xrange。
1.1、list(列表)
list,列表是一種序列,可以看做是一種數(shù)組,但不同的于其它語(yǔ)言的是,Python列表中的元素可以是任何數(shù)據(jù)類(lèi)型,諸如,數(shù)字、字符串等等。
下面為創(chuàng)建list結(jié)構(gòu)的幾種方式:
//1.通過(guò)中括號(hào)括起已知的元素創(chuàng)建list
mylist = ['orange', 'apple', 1,2,3.14];
//2.通過(guò)中括號(hào)創(chuàng)建空l(shuí)ist,然后用append()追加動(dòng)態(tài)元素
mylist = [];
mylist.append('orange');
//3.通過(guò)list()方法創(chuàng)建空l(shuí)ist
mylist = list();
選取list元素的方法:
//通過(guò)中括號(hào)加下對(duì)應(yīng)下標(biāo)選取,下標(biāo)從0開(kāi)始,-1為倒數(shù)第一個(gè)元素,以此類(lèi)推 mylist[0]; mylist[-1];
切片是Python中序列結(jié)構(gòu)獨(dú)有的一種操作,意思是從序列中選取一個(gè)子序列,凡是序列均可切片,list是序列,所以list可以切片。切片方法:
//通過(guò)[begin:end]方式完成切片 mylist = [1,2,3,4,5]; mylist[0:2]; //生成的序列為[1,2,3]
list常用方法:
- list.append(x),在列表的末尾添加一個(gè)元素。
- list.insert(i, x),在給定的位置插入一個(gè)元素,第一個(gè)參數(shù)是要插入的元素的索引。
- list.remove(x),移除列表中第一個(gè)值為 x 的元素,如果沒(méi)有這樣的元素,則拋出異常。
- list.clear(),刪除列表中所有的元素。
- list.index(x),返回列表中第一個(gè)值為 x 的元素的從零開(kāi)始的索引,如果沒(méi)有這樣的元素,則拋出異常。
- list.count(x),返回元素 x 在列表中出現(xiàn)的次數(shù)。
- list.reverse(),反轉(zhuǎn)列表中的元素。
機(jī)器學(xué)習(xí)
1.2、tuple(元組)
tuple,元組和列表一樣,都以看做是一種數(shù)組,元素可以是任何數(shù)據(jù)類(lèi)型,甚至可以嵌套。唯一的區(qū)別是,元組內(nèi)的元素一旦創(chuàng)建,是不可修改的,也不可追加。并且元組使用小括號(hào)創(chuàng)建,同樣元組可切片,切片方法同list。
//1.通過(guò)小括號(hào)括起已知的元素創(chuàng)建tuple mytuple = (1, 3, 'hello!') //2.不可以用append()往tuple追加,因?yàn)閠uple一旦創(chuàng)建,不可變更
獲取tuple中的元素:
//和列表一樣,通過(guò)中括號(hào)加下對(duì)應(yīng)下標(biāo)選取,下標(biāo)從0開(kāi)始,-1為倒數(shù)第一個(gè)元素,以此類(lèi)推 mytuple[0]; mytuple[-1];
1.3、string,unicode,buffer,xrange
這四個(gè)也是序列,做科學(xué)計(jì)算由于不太常用,不做太多介紹。
string可以看成是少量單個(gè)字符構(gòu)成的list,如:
mystring = 'orange'; mylist = ['o','r','a','n','g','e'];
由于string也是序列,所以也可以切片,切片就當(dāng)做單個(gè)字符構(gòu)成的list切片即可,很多原理類(lèi)似,不做過(guò)多介紹。
unicode和string類(lèi)似,不過(guò)可以支持原生unicode編碼的序列,如\\u4f60\\u597d。
buffer可以看成大量字符構(gòu)成的list。
xrange可以看成純數(shù)字構(gòu)成的list。
科學(xué)計(jì)算
二、散列結(jié)構(gòu)
所謂散列結(jié)構(gòu),區(qū)別于上述序列結(jié)構(gòu),散列結(jié)構(gòu)中,元素順序是不重要的,順序不同的散列,還是同一個(gè)散列。散列結(jié)構(gòu)有set、dict。
2.1、set(集合)
set,集合,集合是由不重復(fù)元素組成的無(wú)序的集,重點(diǎn)是不重復(fù),和數(shù)學(xué)中的集合類(lèi)似。無(wú)序是散列結(jié)構(gòu)的特點(diǎn),集合是一種散列結(jié)構(gòu),所以集合也有無(wú)序的特點(diǎn)。
創(chuàng)建set的方法:
//和list很類(lèi)似,可對(duì)應(yīng)參考
//1.通過(guò)大括號(hào)括起已知的元素創(chuàng)建set
myset = {'red','blue',2.71};
//2.通過(guò)set()方法創(chuàng)建空set,注意不能用{}創(chuàng)建空set,這樣創(chuàng)建的是空dict
//3.然后用add()添加動(dòng)態(tài)元素,注意不是append
myset = set();
myset.add('yellow');
Python的set集合可以支持并集,交集,差集,對(duì)稱(chēng)差等數(shù)學(xué)運(yùn)算:
//創(chuàng)建集合a
a = set('abracadabra');
//創(chuàng)建集合b
b = set('alacazam');
------------------
print(a)
//結(jié)果:{'a', 'r', 'b', 'c', 'd'}
------------------
print(a - b); //差集
//結(jié)果:{'r', 'd', 'b'}
------------------
print(a | b); //并集
//結(jié)果:{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
------------------
print(a & b); //交集
//結(jié)果:{'a', 'c'}
------------------
print(a ^ b); //對(duì)稱(chēng)差
//結(jié)果:{'r', 'd', 'b', 'm', 'z', 'l'}
set常用方法:
- set.remove(x),移除集合中值為 x 的元素,如果沒(méi)有這樣的元素,則拋出異常。
- set.isdisjoint(set2),判斷兩個(gè)集合是否包含相同的元素,如果沒(méi)有返回 True,否則返回 False。
- set.issubset(set2),判斷集合set是否包含于set2
- set.issuperset(set2),判斷集合set是否包含set2,issubset與issuperset是一對(duì)互逆操作。
2.2、dict(字典)
dict,字典,字典由鍵值對(duì)組成,具有唯一性,可變性。字典是可變對(duì)象但字典的鍵的唯一的,是不可變對(duì)象。理解字典的最好方式,就是將它看做是一個(gè) 鍵 : 值對(duì)的集合。
創(chuàng)建dict的方法:
//1.通過(guò)大括號(hào)括起鍵值對(duì)創(chuàng)建dict
mydict = {'name':'tom','age':'24'};
//2.通過(guò)dict()方法創(chuàng)建dict
mydict = dict(name = 'tom',age = 24);
//3.通過(guò)大括號(hào)創(chuàng)建空dict,然后通過(guò)中括號(hào)添加鍵值對(duì)
mydict = {};
mydict['tel'] = '1300000000';
獲取dict中的元素:
//需要已經(jīng)知道鍵的名稱(chēng),否則無(wú)法獲取,除非遍歷
mydict.get('tel');
dict常用方法:
- dict.copy(),拷貝出一個(gè)新的字典。
- dict.setdefault({'sex':'man'}),有則查,無(wú)則增。
- dict.update({'sex':'male'}),有則改,無(wú)則增。
- dict.pop('tel'),指定刪除,參數(shù)必須要有需要?jiǎng)h除的鍵。
- dict.clear(),清空字典。
- dict.keys(),查詢(xún)字典中所有的鍵。
- dict.values(),查詢(xún)字典中所有的值。
- dict.items(),查詢(xún)字典中所有的鍵值對(duì)。
以上即為Python自帶的數(shù)據(jù)結(jié)構(gòu),共分為序列結(jié)構(gòu)和散列結(jié)構(gòu)兩大類(lèi),序列結(jié)構(gòu)有l(wèi)ist、tuple、string、unicode、buffer、xrange,散列結(jié)構(gòu)有set、dict。
總結(jié)
以上所述是小編給大家介紹的淺析Python語(yǔ)言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- Python基礎(chǔ)之?dāng)?shù)據(jù)結(jié)構(gòu)詳解
- python中常用的數(shù)據(jù)結(jié)構(gòu)介紹
- python實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)中雙向循環(huán)鏈表操作的示例
- Python描述數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之哈夫曼樹(shù)篇
- 淺談Python描述數(shù)據(jù)結(jié)構(gòu)之KMP篇
- 基于python實(shí)現(xiàn)模擬數(shù)據(jù)結(jié)構(gòu)模型
- Python數(shù)據(jù)結(jié)構(gòu)dict常用操作代碼實(shí)例
- 基于Python數(shù)據(jù)結(jié)構(gòu)之遞歸與回溯搜索
- Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-堆棧和隊(duì)列的操作方法
- Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊(duì)列的操作方法
- 4種非常實(shí)用的python內(nèi)置數(shù)據(jù)結(jié)構(gòu)
相關(guān)文章
Python 使用SMTP發(fā)送郵件的代碼小結(jié)
python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對(duì)smtp協(xié)議進(jìn)行了簡(jiǎn)單的封裝,需要的朋友可以參考下2016-09-09
pycharm 多行批量縮進(jìn)和反向縮進(jìn)快捷鍵介紹
這篇文章主要介紹了pycharm 多行批量縮進(jìn)和反向縮進(jìn)快捷鍵介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
Python中MySQLdb和torndb模塊對(duì)MySQL的斷連問(wèn)題處理
這篇文章主要介紹了Python中MySQLdb和torndb模塊對(duì)MySQL的斷連問(wèn)題處理,torndb使用起來(lái)相對(duì)更加簡(jiǎn)潔一些,需要的朋友可以參考下2015-11-11
Python并行計(jì)算庫(kù)Joblib高效使用指北
Joblib是用于高效并行計(jì)算的Python開(kāi)源庫(kù),其提供了簡(jiǎn)單易用的內(nèi)存映射和并行計(jì)算的工具,以將任務(wù)分發(fā)到多個(gè)工作進(jìn)程中,這篇文章主要介紹了Python并行計(jì)算庫(kù)Joblib使用指北,需要的朋友可以參考下2024-08-08
Python中使用urllib2模塊編寫(xiě)爬蟲(chóng)的簡(jiǎn)單上手示例
這篇文章主要介紹了Python中使用urllib2模塊編寫(xiě)爬蟲(chóng)的簡(jiǎn)單上手示例,文中還介紹到了相關(guān)異常處理功能的添加,需要的朋友可以參考下2016-01-01

