Pythonとデータ構造学習---3
6975 ワード
以下、Arrayを用いるVector.すなわちPythonに付属するlist()を実現する.
コードは次のとおりです.
テストは基本的にlistと同じです.
中间は1つの小さい东に関连して.Pythonで関数を隠すために、データ.は前に``をつけるだけですいいですよ.もちろんデータ、関数はまだあります.名前を変えただけです.具体的には(覚えています.)を見ることができます.
寝る前に...
コードは次のとおりです.
class Vector:
def __init__(self):
self._length = 0
self._capacity = 2
self._array = Array(self._capacity)
def __len__(self):
return self._length
def __contains__(self,item):
for v in self:
if v == item:
return True
return False
def __getitem__(self,index):
return self._array[index]
def __setitem__(self,index,value):
self._array[index] = value
def __new_array(self):
oldCap = self._capacity
newCap = self._capacity * 2
newArray = Array(newCap)
for i,v in enumerate(self._array):
newArray[i] = v
self._array = newArray
self._capacity = newCap
def append(self,item):
if self._length == self._capacity:
self.__new_array()
self._array[self._length] = item
self._length += 1
def insert(self,ndx,item):
if self._length == self._capacity:
self.__new_array()
for i in range(self._length,ndx,-1):
self[i] = self[i-1]
self._array[ndx] = item
self._length += 1
def remove(self,ndx):
for i in range(ndx,self._length):
self[i] = self[i+1]
self._length -= 1
def indexOf(self,item):
for i,v in enumerate(self):
if v == item:
return i
return -1
def extend(self,otherVector):
for v in otherVector:
self.append(v)
def subVector(self,f,t):
newV = Vector()
for i in range(f,t):
newV.append(self._array[i])
return newV
def __iter__(self):
return _VectorIterator(self)
class _VectorIterator:
def __init__(self,theVector):
self._vectorRef = theVector
self._curNdx = 0
def __iter__(self):
return self
def next(self):
if self._curNdx < len(self._vectorRef):
entry = self._vectorRef[self._curNdx]
self._curNdx += 1
return entry
else:
raise StopIteration
テストは基本的にlistと同じです.
中间は1つの小さい东に関连して.Pythonで関数を隠すために、データ.は前に``をつけるだけですいいですよ.もちろんデータ、関数はまだあります.名前を変えただけです.具体的には
寝る前に...