python數據結構:數據類型
1.數據是什麼?
在 Python
以及其他所有面向對象編程語言中,類都是對數據的構成(狀態)以及數據 能做什麼(行為)的描述。由於類的使用者隻能看到數據項的狀態和行為,因此類與抽象數據類 型是相似的。在面向對象編程范式中,數據項被稱作對象。一個對象就是類的一個實例。
2.數據類型
2.1內建原子數據類型
Python
有兩大內建數據類實現瞭整數類型和浮點數類型,相應的 Python
類就是 int
和 float
。標準的數學運算符,即+、-、*、/以及**(冪),可以和能夠改變運算優先級的括號一起使用。其他非常有用的運算符包括取餘(取模)運算符%,以及整除運算符//。註意,當兩個整數相除時,其結果是一個浮點數,而整除運算符截去小數部分,隻返回商的整數部分。
Python 通過 bool 類實現對表達真值非常有用的佈爾數據類型。佈爾對象可能的狀態值是 True 或者 False,佈爾運算符有 and、or 以及 not。
其實這一章最想讓大傢知道的變量賦值的問題:
theSum = 0
賦值語句 theSum = 0
會創建變量 theSum,並且令其保存指向數據對象 0 的引用。Python
會先計算賦值運算符右邊的表達式,然後將指向該結果數據對象的引用賦給左 邊的變量名。在本例中,由於 theSum
當前指向的數據是整數類型,因此該變量類型為整型。
如果數據發生瞭變化怎麼辦,比如:
theSum=True
這個時候變量的類型也會變成佈爾類型。賦值語句改變瞭變量的引用,這體現瞭 Python
的動態特性。同樣的變量 可以指向許多不同類型的數據。
2.2 內建集合數據類型
除瞭數值類和佈爾類,python還有眾多強大的內建集合類。我們將它們分為兩類:
- 有序集合:列表、字符串、元祖
- 無需集合:集合、字典
說明一下,有序集合中有些方法是可以相互通用的,因為它們的性質很相似。無需集合也是一樣,但是它們都是屬於數據集合,會有一些大傢公共的方法。
3.集合數據類型的方法
這一章節主要講述列表、字符串、元祖、集合、字典各自的內置函數。
在這之前先介紹一下range
函數。
range
是一個常見的 Python
函數,我們常把它與列表放在一起討論。range
會生成一個代 表值序列的范圍對象。使用 list 函數,能夠以列表形式看到范圍對象的值。
rang
的一些用法。
range(10)#默認從0開始 #結果range(0, 10) list(range(10)) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] range(5,10) #結果range(5, 10) list(range(5,10)) #[5, 6, 7, 8, 9] list(range(5,10,2)) #[5, 7, 9] list(range(10,1,-1)) #[10, 9, 8, 7, 6, 5, 4, 3, 2]
3.1 列表
列表是零個或多個指向 Python
數據對象的引用的有序集合,通過在方括號內以逗號分隔的一 系列值來表達。空列表就是[]。列表是異構的,這意味著其指向的數據對象不需要都是同一個類, 並且這一集合可以被賦值給一個變量。
舉例:
#列表 mylist=[1,3,True,6.5] #結果:[1, 3, True, 6.5] mylist[0] #結果 1 mylist[2]+mylist[1] #結果 4 mylist[1:3]#隻顯示index為1,2 #結果 [3, True] for i in mylist: print(i) #結果 True 6.5 mylist.append(9) #[1, 3, True, 6.5, 9] mylist.insert(1,2)#在index為1的位置插入2 #[1, 2, 3, True, 6.5, 9] mylist.pop()#刪除並返回最後一個數 # 結果 9 mylist.pop(1)#刪除並返回index為1的數 #結果 2 mylist.sort()#排序 #[1, True, 3, 6.5] mylist.reverse()#反轉數組 #[6.5, 3, True, 1] del mylist[1]#刪除index為1的元素 mylist.index(1)# 返回元素為1的元素下標 mylist.insert(1,9)#在index位置插入元素9 mylist.count(9)#返回9在數組中出現的次數 mylist.remove(9)#移除元素9
3.2 字符串
字符串是零個或多個字母、數字和其他符號的有序集合。這些字母、數字和其他符號被稱為 字符。常量字符串值通過引號(單引號或者雙引號均可)與標識符進行區分。
舉例:
myname="aaron" #結果 aaron myname.upper()#轉化大寫 #結果 'AARON' myname.center(10)#填充空格 #結果為' aaron ' myname.find("r") #結果為 2 myname.split("r")#分割子串,如果沒有提供分隔字符,那麼 split 方法將會尋找如制表符、換行符和空格等空白字符。 #結果為 ['aa', 'on']
總結:列表和字符串的主要區別在於,列表能夠被修改,字符串則不能。列表的這一特性被稱為可修改性。列表具有可修改性,字符串則不具有。例如,可以通過使用下標和賦值操作來修改列表中的一個元素,但是字符串不允許這一改動。
看一下:
3.3 元祖
元組與列表非常相似。它們的區別在於,元組和字符串一樣是 不可修改的。元組通常寫成由括號包含並且以逗號分隔的一系列值。與序列一樣,元組允許之前 描述的任一操作。
舉例:
mytuple=(2,True,4.96) #(2, True, 4.96) len(mytuple) #結果 3 mytuple[2] #結果 4.96
註意:元祖不可修改
3.4 集合
集合是由零個或多個不可修改的 Python
數據對象組成的無序集合。集不允許重復元素, 並且寫成由花括號包含、以逗號分隔的一系列值。
舉例:
myset={3,6,"dog","cat",False} #{3, 6, False, 'cat', 'dog'} len(myset) #結果 5 False in myset #false是否在集合中 #結果 true 'pink' in myset #結果 false
舉例:
myset #{3, 6, False, 'cat', 'dog'} yourset={99,3,100} #{3, 99, 100} myset.union(yourset)#取並級 #{100, 3, 6, 99, False, 'cat', 'dog'} myset | yourset#取並集 #{100, 3, 6, 99, False, 'cat', 'dog'} myset.intersection(yourset)#取交集 #{3} myset.difference(yourset)#取差集 #{6, False, 'cat', 'dog'} myset-yourset#取差集 #{6, False, 'cat', 'dog'} {99,100}.issubset(yourset)#判斷是否為子集 #True {99,100}<=yourset#判斷是否為子集 #True myset.add(101) #{101, 3, 6, False, 'cat', 'dog'} myset.remove(101)#移除元素 #{3, 6, False, 'cat', 'dog'} myset.pop()#隨機移除元素(這裡移除瞭false) #False myset.clear()#清空集合 #set()
3.5 字典
字典是無序結構,由相關的元素對構成,其中每對元素都由一個鍵和一個值組成。這種鍵–值對通常寫成鍵:值的形式。字典由花括號包含的一系列以逗號分隔的鍵–值對表達。
舉例:
mydict={"name":"aaron","sex":"man"} #{'name': 'aaron', 'sex': 'man'} mydict["name"] #'aaron' mydict["old"]=18#添加一對key- value #{'name': 'aaron', 'sex': 'man', 'old': 18} len(mydict) #3 mydict.get("sex") #'man' mydict.get("class","不存在")#如果前面的不存在,就返回第二個 #'不存在'
參考資料:
- 《python數據結構與算法》
- 《大話數據結構》
到此這篇關於python數據結構:數據類型的文章就介紹到這瞭,更多相關python數據類型內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python六種基本數據類型及常用函數展示
- python爬取之json、pickle與shelve庫的深入講解
- 詳解Python中的List 2
- Python中對象的比較操作==和is區別詳析
- Java數據開發輔助工具Docker與普通程序使用方法