🌋資料結構以前是用java學習的,那都是大一大二的事情了,早忘的差不多了,前段日子刷力扣的資料結構有點忘了,于是打算近期撿起來,讓我們用python學習一遍,
目錄
- 1.資料是什么?
- 2.資料型別
- 2.1內建原子資料型別
- 2.2 內建集合資料型別
- 3.集合資料型別的方法
- 3.1 串列
- 3.2 字串
- 3.3 元祖
- 3.4 集合
- 3.5 字典
- 參考資料
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)
#結果
1
3
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資料結構與演算法》
《大話資料結構》
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289864.html
標籤:其他
上一篇:動態記憶體管理(動態記憶體函式的介紹,c/c++經典筆試題,柔性陣列)
下一篇:LINUX02_概述、檔案系統詳解、vim、cd、ls、mkdir、touch、rm、cp、less、tail、head、find、locate、打包或解壓tar
