- Notifications
You must be signed in to change notification settings - Fork 63
Expand file tree
/
Copy pathPyArray.py
More file actions
Latest commit
95 lines (94 loc) · 2.6 KB
/
Copy pathPyArray.py
File metadata and controls
95 lines (94 loc) · 2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
importctypes
classarray:
def__init__(self,size):
assertsize>0, "Array size must be > 0"
self.size=size
PyArray=ctypes.py_object*size
self.elements=PyArray()
self.clear(None)
def__len__(self):
returnself.size
def__getitem__(self,index):
assertindex>=0andindex<len(self), "Illegal index"
returnself.elements[index]
def__setitem__(self,index,item):
assertindex>=0andindex<len(self), "Illegal index"
self.elements[index] =item
defclear(self,value):
foriinrange(len(self)):
self.elements[i] =value
def__iter__(self):
returnarrayIter(self,self.elements)
classarrayIter:
def__init__(self,theArray):
self.array=theArray
self.index=0
def__iter__(self):
returnself
def__next__(self):
ifself.index<len(self.array):
item=self.array[self.index]
self.index+=1
returnitem
else:
raiseStopIteration
classmyArray2D(array):
def__init__(self,nRows,nCols):
array.__init__(self,nRows*nCols)
self.nRows=nRows
self.nCols=nCols
def__getitem__(self,indexTuple):
assertlen(indexTuple) ==2, "Illegal Index"
row=indexTuple[0]
col=indexTuple[1]
assertrow>=0androw<self.nRows \
andcol>=0andcol<self.nCols,\
"Illegal Index"
index=row*self.nCols+col
returnarray.__getitem__(self,index)
def__setitem__(self,indexTuple,item):
assertlen(indexTuple) ==2, "Illegal Index"
row=indexTuple[0]
col=indexTuple[1]
assertrow>=0androw<self.nRows \
andcol>=0andcol<self.nCols,\
"Illegal Index"
index=row*self.nCols+col
array.__setitem__(self,index,item)
classarray2D:
def__init__(self,nRows,nCols):
self.nRows=nRows
self.nCols=nCols
self.rows=array(nRows)
foriinrange(nRows):
self.rows[i] =array(nCols)
defnumOfRows(self):
returnself.nRows
defnumOfCols(self):
returnself.nCols
def__getitem__(self,indexTuple):
assertlen(indexTuple) ==2, "Illegal Index"
row=indexTuple[0]
col=indexTuple[1]
assertrow>=0androw<self.nRows \
andcol>=0andcol<self.nCols,\
"Illegal Index"
theArray=self.rows[row]
returntheArray[col]
def__setitem__(self,indexTuple,item):
assertlen(indexTuple) ==2, "Illegal Index"
row=indexTuple[0]
col=indexTuple[1]
assertrow>=0androw<self.nRows \
andcol>=0andcol<self.nCols,\
"Illegal Index"
theArray=self.rows[row]
theArray[col] =item
a=array(10)
foriinrange(10):
a[i] =2**i
printa[i]
aa=myArray2D(5):
aa[i,j] =i*j
printaa[i,j]
print