對于每種編程語言一般都會規定一些容器來保存某些數據,就像java的集合和數組一樣python也同樣有這樣的結構
而對于python他有四個這樣的內置容器來存儲數據,他們都是python語言的一部分可以直接使用而無需額外的導入
一.列表(list)
列表一種跟java和c中的數據很像的一種數據結構,他都是保存一系列相似,且有序元素的集合,不過不同的是列表中的元素可以不是同一種數據類型,且列表的長度是可變的
可以動態的增加可減少這一點則有點像java中的stringBuilder對象,列表中有一點值得注意的是在對列表進行復制是,不能簡單的使用賦值語句,這樣會使得兩個變量同時指向一個列表,當一個改變時另一個變量的值也會改變,正確的復制方法是用copy()方法來進行復制
關于一個存儲結構增刪查看則其必備的功能:
1.列表元素的增加
2.列表元素的刪除
下面通過一個簡單的例子來說明以上方法的使用:
#在 Don't panic變為 on tap
phrase="Don't panic"
plist=list(phrase) #將phrase表示的字符串轉化為列表
print(phrase) #將該字符串輸出
print(plist) #結果為['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c']
plist.remove("'") #將‘在列表中刪除
for i in range(3):
plist.pop() #將列表末尾的3個字符給刪除,'n','i','c'
plist.pop(0) #將plist中索引對應的對象刪除,也就是D
#此時list中的值為['o', 'n', 't', ' ', 'p', 'a']
plist.extend([plist.pop(5),plist.pop(4)]) #將p和a的位置交換
plist.insert(2,plist.pop(3)) #將空格插入到對應索引為2的對象前
phrase =''.join(plist) #將列表轉化為字符串
print(phrase)
3.列表元素的查看:
值得說明的是列表的查看和數組相似,都支持下標查看不過不同的是列表的查看功能比數組更多
下面我們任然以一段簡單的代碼來展示其用法:
#在 Don't panic變為 on tap phrase="Don't panic" plist=list(phrase) new_phase=''.join(plist[1:3])#在列表中截取on print(new_phase) new_phase=new_phase+''.join([plist[5],plist[4],plist[7],plist[6]]) #切片的實例,以及負數 plist[-1] # c temp =plist[5:1:-1] #[' ', 't', "'", 'n']當步長為負數時其結果時從右到左遍歷 temp2=plist[::2]#['D', 'n', 't', 'p', 'n', 'c'],從頭遍歷到尾步長為2
事實上對于存儲類似對象的時候我們一般是使用列表,而對于那種有結構的數據是列表就顯得不那么實用了因為列表很難存儲數據之間的結構
所以對于那種結構化的數據我們一般采用字典來存儲
二.字典(dict)
字典使用來保存一個鍵值對集合,其中每個唯一的鍵都有一個與之對應的值,通常我們把字典稱為關聯數組,如果你學過java的那么對字典就不會陌生了因為它其實就是java中的set集合,python的字典是無序的它不會保留你插入時的順序,同時由于字典使用的是一種高度優化的散列算法所以即使是沒有順序字典一樣能快速的訪問與一個鍵相關的值
1字典的定義:
其結構為{鍵1:值1,鍵2:值2},可以看出字典的開始和結束都是用大括號鍵和值用冒號隔開,不同鍵值對之間用逗號分隔,其中值可以為列表,另一個字典
2字典的增加:
字典時一個動態的集合他可以在鍵對不存在時插入新的鍵值對,但是字典中鍵必須進行初始化后才可以引用例如:在一個商店中你不知到你的商店中的蘋果又沒有時
你不可以直接的使用蘋果這個值而當你像添加時也需要查明商店中是否有這樣物品,對于字典則無需這樣。因為字典已經分裝好了一個setdefault()方法只需直接調用即可
下面用一段簡單代碼展示:
#字典的添加鍵值對
fruit={}
#當直接使用不存在的鍵值對時
fruit['apple']+=1 #沒有對該鍵初始化而直接使用會出現keyError
#當不使用setdefault方法時動態的增加鍵值對
if 'apple' not in fruit:
fruit['apple']=0 #初始化鍵值
fruit['apple']+=1 #增加蘋果的量
print(fruit['apple'])
#使用setdefault時,其實就是設置一個默認值,確保使用時這個使用的鍵存在即可
fruit.setdefault('apple',0)#當鍵存在時這個語句沒有任何作用,相當于上面選擇的分裝
fruit['apple']+=1
print(fruit['apple'])
3字典的遍歷:
對于一個集合來說我們一般都會采用集合來遍歷其中的所有元素但是對于字典來說單單只用循環的話并不夠方便因為僅僅只用循環的話解釋器只會處理字典的鍵
對于其值任然需要用鍵來查值,對于這種問題python提供了一個items()的方法使得可以直接使用循環變量來訪問字典的鍵和值
下面通過一段簡單的代碼說明:
fruit={'apple':10,'pears':5,'bananas':20,'orange':4}
#直接使用for循環遍歷
for i in fruit:
print("種類",i,"數量",fruit[i])
#使用items方法遍歷
for i,v in fruit.items():
print("種類",i,"數量",v)
4字典的元素刪除:
python的字典刪除有三種方法,一種是clear()是刪除字典中的所有元素,二是pop()根據pop中的參數刪除與其鍵相同的鍵值對,三是popitem()隨機刪除字典中的元素
對于有結構的數據我們使用字典時會顯得非常方便,因為他不僅可以保存結構,還可以保證記錄不重復,但是對于那些沒有結構的數據我們又不希望他們重復時,字典和列表顯然都不適合我們使用了,這時我們就會想到使用集合了
三.集合(set)
1集合的定義:
{元素1,元素2,元素3.....}和字典一樣都是用大括號定義,不過不同的是其中沒有冒號分割,還有一種定義方法是向set()函數中傳遞任意一個序列(如一個字符串set('fsdaf'))
2集合的運算:
python中的集合同于數學中的集合同樣有交,并,差等運算其中并算提供方法union(),差集方法difference()不過這里不同的是只能顯示使用該方法的集合中不同于另一個集合的所有元素,交集的方法intersection()顯示相同的元素
下面用代碼來實現上述方法:
#集合的運算
temp={'a','e','i','o','u'}
temp2=set("fda");
#交運算
result=temp.intersection(temp2)#{'a'}
#并運算
result=temp.union(temp2)#{'a', 'o', 'f', 'd', 'u', 'e', 'i'}
#差運算
result=temp.difference(temp2)#{'o', 'e', 'u', 'i'}
我們知道變量有兩種一種是變量一種是常量,變量的值可以重新賦予,而常量的值則不行,在python中我們同樣有一個不變的結構叫做元組
四.元組(tuple)
1元組的定義:
元組與列表密切相關列表是用中括號定義而元組則是用小括號定義(元素1,元素2,元素3,.....),值得注意的是當只有一個對象是并不能僅僅(對象)這樣定義并不是元組,正確的定義方法是(對象,)這樣才是元組
在最后我有必要說明一下:在這四個內置結構為空時的解釋器的表示方法:1.空列表[] 2.空字典{} 3.空集合set() 4.空元組()
以上所述是小編給大家介紹的python的四種內置數據結構詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。