Python(常用數據結構)

1. 序列:

	序列中的每個元素都有自己的編號。Python中有6種內建的序列。其中列表和元組是最常
見的類型。其他包括字符串、Unicode字符串、buffer對象和xrange對象。
	區別:列表是可變的,字符串和元組不可變。
	1.1 列表:
		1.1.1 列表常用操作:
			"-".join(k)				//使用“”中的字符將列表中的元素連接起來,可以爲空字符串
			i.append("a")			//在列表末尾插入字符串“a”
			i.append(j)				//將列表j作爲一個元素插入到列表i末尾
			i.extend(j)				//合併列表i和j
			i.insert(0,"a")			//在列表第0位插入字符串“a”,第0位及後面的元素向後移動一位
			if char in i			//in爲判斷char字符串是否在列表i中,not in判斷是否不存在列表中
			i.index("a")			//查找列表中第一個字符串“a”所在位置
			i.count("a")			//查找列表中字符串“a”出現的次數
			del i[0]				//刪除列表中第0位元素
			i.pop()					//刪除並返回列表的最後一個元素
			i.remove("a")			//刪除列表中的元素“a”
			i.reverse()				//逆序排列列表
			i.sort()				//由小到大排序列表,降序排序可在括號中加參數reverse=True
			cmp(list1, list2)		//比較兩個列表的元素
			len(list)				//列表元素個數
			max(list)				//返回列表元素最大值
			min(list)				//返回列表元素最小值
			list(seq)				//將元組轉換爲列表
		1.1.2 列表的優點:
			佔用空間小,浪費內存很少。(以時間換空間)
		1.1.3 列表的缺點:
			查找和插入的時間隨着元素的增加而增加。
	1.2 元組:
		1.2.1 元組常用操作:
			tuple=(a,"a",1)			//元祖不可以修改,只支持查看,定義好後不能進行修改,但可
		以修改元祖內的列表元素的內容,元組中只包含一個元素時,需要在元素後面添加逗
		號,否則括號會被當作運算符使用。
			len(tup1)				//返回元組中元素的個數
			tup1[1:5]				//返回元組tup1下標爲1-4的元素(包頭不包尾)
			tup3 = tup1 + tup2		//將tup1和tup2兩個元組連接起來生成一個新的元組
			tup2 = tup1 * 5			//將tup1中的元素複製5遍生成一個新的元組
			3 in tup1				//判斷3是否包含於元組tup1中,返回布爾類型
			for i in tup1			//返回tup1中的每個元素(元組可迭代)
			max(tup1)				//返回元組中的最大元素
			min(tup1)				//返回元組中的最小元素
			tuple(seq) 				//將列表轉換爲元組
		1.2.2 元組的優點:
			佔用內存小,處理速度快。
		1.2.3 元組的應用:
			交換賦值:
			a = 1
			b = 2
			b, a = a, b
			print(a,b)
			原理:將a, b封裝爲一個元組,b, a = (1, 2),b = (1, 2)[0],a = (1, 2)[1]
	1.3 字符串:
		1.3.1 字符串常用操作:
			i.find("abc")			//查找i中是否存在“abc”,若存在,返回第一個“abc”在列表中的位
		置,若不存在,則返回-1
			i.rfind("abc")			//從右邊開始查找
			i.index("abc")			//用法同find,當不存在時報錯
			i.count("abc")			//返回列表中“abc”的個數
			i.replace("a","z",2)	//替換前兩個a爲z
			i.split("-",2)			//字符串切割,“”內爲分隔標誌字符,2爲將前兩部分單獨分割,分
		隔後不保留分割標識字符,若“”內不指定分割標識字符,則將所有的符號及空格看作標識字符
			i.partition("-")		//字符串切割,保留分割標識符
			i.capitalize()			//字符串首字母大寫
			i.title()				//字符串單詞首字母大寫
			i.startswith("a")		//判斷字符串是否以“”內字符串開頭,返回布爾類型
			i.endswith("a")			//判斷字符串是否以“”內字符串結尾,返回布爾類型
			i.upper()				//將字符串所有的小寫變成大寫
			i.lower()				//將字符串所有的大寫變成小寫
			i.ljust(100)			//在100像素寬度內左對齊字符串
			i.rjust(100)			//在100像素寬度內右對齊字符串
			i.center(100)			//在100像素寬度內居中對齊字符串
			i.strip()				//刪除左右兩端的空白字符,若要指定左右,前面加上l或r
			i.isalpha()				//判斷字符串是否只由字母組成,返回布爾類型
			i.isdigit()				//判斷字符串是否只由數字組成
			i.isalnum()				//判斷字符串是否由字母和數字組成
			i.isspace()				//判斷字符串是否只由空格組成

2. 映射:

	映射中的每個元素都有一個名字,這個名字專業的名稱叫鍵。字典(也叫散列表)是Python中唯一內建的映射類型。字典的鍵可以是數字、字符串或者是元組,鍵必須唯一。在Python中,數字、字符串和元組都被設計成不可變類型,而常見的列表以及集合(set)都是可變的,所以列表和集合不能作爲字典的鍵。鍵可以爲任何不可變類型,這正是Python中的字典最強大的地方。
	2.1 字典:
		2.1.1 字典常用操作:
			dict={key1:value1,key2:value2}		//創建字典(字典中的鍵和值成對出現,鍵不
		可以重複,值可以重複)
			dict.get("age",0)					//使用get方法返回鍵對應的值,0表示當鍵不存在時返
		回0,直接訪問不存在的鍵時報錯
			dict["age"]							//返回age鍵對應的值
			dict["age"]=1						//修改age鍵對應的值爲1,若不存在age鍵,則添加age
		鍵,且值爲1
			del dict["age"]						//刪除age鍵和其對應的值
			dict.keys()							//返回dict中的鍵
			dict.values()						//返回dict中的值
			dict.items()						//返回dict中的鍵和值
			for name,age in dict.items()		//返回dict中的鍵值對
		2.1.2 字典的優點:
			查找和插入的速度極快,不會隨着key的增加而變慢。
		2.1.3 字典的缺點:
			需要佔用大量的內存,內存浪費多。

3. 集合:

	集合(set)是一個無序的不重複元素序列。可以使用大括號 { } 或者 set() 函數創建集合,
創建一個空集合必須用 set() 而不是 { },因爲 { } 是用來創建一個空字典。
	3.1 集合:
		3.1.1 集合常用操作:
			s = set(('12', '15', '98'))					創建集合{'98', '15', '12'}
			s = set('121598')							創建集合{'8', '5', '9', '2', '1'}
			s = {'12', '15', '98'}						創建集合{'98', '12', '15'}
			'12' in s									判斷'12'是否在集合s中
			s1 - s2										包含於集合s1而不包含於集合s2的元素,返回值爲集合
			s1 | s2										集合s1和集合s2中的所有元素,返回值爲集合
			s1 ^ s2										不同時包含於集合s1和集合s2的元素,返回值爲集合
			s1 & s2										同時包含於集合s1和集合s2的元素,返回值爲集合
			{x for x in '12589485' if x not in '159'}	使用推導式創建集合
			s.add(x)									將元素x添加到集合s中,add參數只能爲字符串、整型
			s.update(x)									將元素x添加到集合s中,update參數可以爲列表、元組、字典。可一次傳
		入多個參數,用逗號隔開。當傳入參數爲字典時,將字典的鍵作爲參數
			s.remove( x )								將元素x從集合s中刪除,當元素x不存在時報錯
			s.discard( x )								將元素x從集合s中刪除,當元素x不存在時不報錯
			s.pop() 									隨機刪除集合s中的一個元素,在交互模式,pop 是刪除集合的第一個元素
		(排序後的集合的第一個元素)。 
			len(s)										計算集合s中元素的個數
			s.clear()									清空集合

4. 棧、隊列:

	棧:先進後出
	隊列:先進後出
	4.1 棧的實現:
		4.1.1 使用列表實現:
			創建棧:stack = []
			入棧:stack.append()
			出棧:stack.pop()

5. 鏈表:

	鏈表是一組
	結點(也可以叫節點或元素),每一個結點有兩個域,左邊部份叫值域,用於存放用戶數據;右邊叫指針域,一般是存儲着到下一個元素的指針
	head結點,head是一個特殊的結節,head結點永遠指向第一個結點
	tail結點,tail結點也是一個特殊的結點,tail結點永遠指向最後一個節點
	None,鏈表中最後一個結點指針域的指針指向None值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章