尾部 方法 Python和資料結構學習 by小雨

2021-09-01 17:00:02 字數 3535 閱讀 7443

今天朋友幾篇文章介紹了改尾部、方法-的文章. 關聯文章的位址

額,睡不著

第二章的尾部還有個關於寫翻轉棋的,臨時先不寫.

面下就是直接上set和map了,這裡應用的是最簡略的方法.也就是外部應用的list

先上set

不過看上去雜復都很高的.

class

set:

def__init__

(self):

self._theelements =list()

def__len__

(self):

return

len(self._theelements)

def__contains__

(self,element):

return element in

self._theelements

defadd(self,element):

if element not

inself:

defremove(self,element):

assert element in self,"

the element must be in the set

"self._theelements.remove(item)

def__eq__

(self,setb):

if len(self) !=len(setb):

return

false

else

:

return

self.issubsetof(setb)

defissubsetof(self,setb):

for element in

self:

if element not

insetb:

return

false

return

true

defunion(self,setb):

newset =set()

newset._theelements.extend(self._theelements)

for element in

setb:

if element not

inself:

return

newset

definterset(self,setb):

newset =set()

for element in

setb:

if element in

self:

return

newset

defdifference(self,setb):

newset =set()

for element in

self:

if element not

insetb:

return

newset

def__iter__

(self):

return iter(self._theelements)

插入$o(n)$,求並,交.差,等相$o(n^2)$,當然面後有通過排序來行進優化的.

面下就是map了,不過其中額定應用了乙個簡略的存保key,value. 這個類似於stl中的 std::pair.

碼代如下:

class

map:

def__init__

(self):

self._entrylist =list()

def__len__

(self):

return

len(self._entrylist)

def__contains__

(self,key):

ndx =self._findposition(key)

return ndx is

notnone

defadd(self,key,value):

ndx =self._findposition(key)

if ndx is

notnone:

self._entrylist[ndx].value =value

return

false

else

: entry =_mapentry(key,value)

return

true

defvalueof(self,key):

ndx =self._findposition(key)

assert ndx is

not none,"

invalid map key

"return

self._entrylist[ndx].value

defremove(self,key):

ndx =self._findposition(key)

ndx =self._findposition(key)

assert ndx is

not none,"

invalid map key

"self._entrylist.pop(ndx)

def__iter__

(self):

return

_mapiterator(self._entrylist)

def_findposition(self,key):

for i in

range(len(self)):

if self._entrylist[i].key ==key:

return

i

return

none

class

_mapentry:

def__init__

(self,key,value):

self.key =key

self.value =value

class

_mapiterator:

def__init__

(self,mapref):

self._curi =0

self._mapref =mapref

def__iter__

(self):

return

self

defnext(self):

if self._curi entry =self._mapref[self._curi]

self._curi += 1

return

entry.key,entry.value

else

:

raise stopiteration

嗯.都是很簡略的.

睡覺拉..

文章結束給大家分享下程式設計師的一些笑話語錄: 某程式設計師對書法十分感興趣,退休後決定在這方面有所建樹。花重金購買了上等的文房四寶。一日突生雅興,一番磨墨擬紙,並點上了上好的檀香,頗有王羲之風 範,又具顏真卿氣勢,定神片刻,潑墨揮毫,鄭重地寫下一行字:hello world.

演算法和資料結構

演算法和資料結構 演算法和資料結構 千絲萬縷的聯絡 縱觀各種演算法書籍,大多都是將演算法和資料結構作為乙個整體來講述。資料結構就是陣列 樹結構等儲存或表現物件資料的結構。將演算法和資料結構作為整體講述,是因為必須依照演算法中的常用操作選擇資料結構。例如,事先將資料儲存在適當的樹形結構中,大多數情況下...

演算法和資料結構

演算法 資料結構與演算法的關係是相互依賴不可分割的。演算法的定義 演算法是解決特定問題求解步驟的描述,在計算機中為指令的有限序列,並且每條指令表示乙個或多個操作。演算法的特性 有窮性 確定性 可行性 輸入 輸出。演算法設計的要求 正確性 可讀性 健壯性 高效率和低儲存量需求。演算法特性與演算法設計容...

集合和資料結構

類似的資料在作為集合而儲存和操作時通常可以得到更高效地處理。可使用 system.array 類或 system.collections system.collections.generic system.collections.concurrent 和 system.collections.imm...