Phthon九 資料結構

2021-08-30 22:41:22 字數 2669 閱讀 2464

1.資料結構就是處理一些資料的結構。或者說,它們是用來儲存一組相關資料的。在python中有三種內建的資料結構—列表、元組和字典

2.列表

list是處理一組有序專案的資料結構,即你可以在乙個列表中儲存乙個序列的專案。在python中,每個專案之間用逗號分割。列表中的專案包括在方括號中。一旦建立了乙個列表,可以新增、刪除或是搜尋列表中的專案。列表是可變的資料型別,即這種型別是可以被改變的。可以在列表中新增任何型別的專案。

列表長度:len(shoplist)

遍歷列表:for item in shoplist: print item

列表排序:shoplist.sort()

刪除專案:del shoplist[0]

3.元組

元組和列表十分類似,元組和字串一樣是不可變的。元組通過圓括號中用逗號分割的專案定義。元組通常用在使語句或使用者定義的函式能夠安全地採用一組值的時候,即被使用的元組的值不會改變。

定義元組:zoo = ('wolf', 'elephant', 'penguin')

元組長度:len(zoo)

新增元素:new_zoo = ('monkey', 'dolphin', zoo)

遍歷元組:print new_zoo

訪問元素:print 'animals brought from old zoo are', new_zoo[2]

print 'last animal brought from old zoo is', new_zoo[2][2]

列印元組:age = 22

name = 'swaroop'

print '%s is %d years old' % (name, age)

結果:swaroop is 22 years old(只有乙個定製的時候可以省略圓括號)

含有0個專案的元組。乙個空的元組由一對空的圓括號組成,如myempty = ()。

含有1個元素的元組必須在第乙個(唯一乙個)專案後跟乙個逗號,這樣python才能區分元組和表示式中乙個帶圓括號的物件。例:乙個包含專案2的元組,singleton = (2 , )。

4.字典

鍵值對的形式,沒有順序,如果想要乙個特定的順序,那麼應該在使用前自己對它們排序。

字典是dict類的例項/物件。

定義字典:ab =

輸出元素:print "swaroop's address is %s" % ab['swaroop']

增加元素:ab['guido'] = '[email protected]'

刪除元素:del ab['spammer']

字典長度:len(ab)

遍歷字典:for name, address in ab.items():

print 'contact %s at %s' % (name, address)

查詢元素:if 'guido' in ab: # or ab.has_key('guido')

print "\nguido's address is %s" % ab['guido']

5.序列

列表、元組和字串都是序列,序列的兩個主要特點是索引操作符和切片操作符。索引操作符讓我們可以從序列中抓取乙個特定專案。切片操作符讓我們能夠獲取序列的乙個切片,即一部分序列。對於列表、元組、字串的方法相同,以;列表為例

中括號裡面的是位置\下標,從0開始

取特定的:print 'item 0 is', shoplist[0]

print 'item 1 is', shoplist[1]

print 'item -1 is', shoplist[-1](倒數第乙個)

取一部分:print 'item 1 to 3 is', shoplist[1:3](不包括3)

print 'item 2 to end is', shoplist[2:](從第三個到結束)

print 'item 1 to -1 is', shoplist[1:-1](第二個到倒數第二個)

print 'item start to end is', shoplist[:](全部)

6.參考

當建立乙個物件並給它賦乙個變數的時候,這個變數僅僅參考那個物件,而不是表示這個物件本身!也就是說,變數名指向你計算機中儲存那個物件的記憶體。這被稱作名稱到物件的繫結。

例如:mylist = shoplist(兩個名稱參考同乙個物件,指向同一片記憶體)

mylist = shoplist[:](兩個物件)

7.字串擴充套件

程式中使用的字串都是str類的物件

定義:name='swaroop'

判斷開始:if name.startswith('swa'):

print 'yes, the string starts with "swa"'

判斷存在:if 'a' in name:

print 'yes, it contains the string "a"'

if name.find('war')!=-1:

print 'yes, it contains the string "war"'(找不到子字串返回-1)

自動連線:delimiter='_*_ '

mylist=['brazil','russia','india','china']

print delimiter.join(mylist)

輸出:brazil_*_russia_*_india_*_china

資料結構(九)

靜態鍊錶 用陣列描述的鍊錶叫做靜態鍊錶該資料下標都對應乙個data 存放資料元素 和乙個cur 存放該元素的後繼在陣列中的下標 線性表的靜態鍊錶儲存結構 define maxsize 1000 假設鍊錶的最大長度為1000 typedef struct comment,staticlinklist ...

資料結構 九 計數排序

1 演算法流程 1 求取待排序陣列a 的最大值 max 2 建立乙個新的陣列c max 1 用於統計陣列 a中的每個元素 a,小於等於 a的個數。3 根據小於等於a 的個數,來確定排序後,a在排序陣列中的位置,進行位置填充 2 實現 寫 需要注意事項 1 計數統計結束後,我們根據c a 的大小填充元...

九 Transaction資料結構 UTXO 錢包

經過前面1序列的鋪墊,我們熟悉了各種基本概念,這1課,將進入最核心的原理的講解 transaction與utxo。這2個東西,是整個區塊鏈的核心的核心,後續一切,都基於對這個的深刻理解。transaction之間的網狀關係 一切交易可追溯 考慮如下場景 使用者a和使用者b之間發生了乙個交易t3,a向...