Back to SDS/2 Parametric Scripts

 

# A simple matrix

# This matrix is a list of lists

# Column and row numbers start with 1

 

class Matrix(object):

def __init__(self, cols, rows):

self.cols = cols

self.rows = rows

# initialize matrix and fill with zeroes

self.matrix = []

for i in range(rows):

ea_row = []

for j in range(cols):

ea_row.append(0)

self.matrix.append(ea_row)

 

def setitem(self, col, row, v):

self.matrix[col-1][row-1] = v

 

def getitem(self, col, row):

return self.matrix[col-1][row-1]

 

def __iter__(self):

for row in range(self.rows):

for col in range(self.cols):

yield (self.matrix, row, col)

 

def __repr__(self):

outStr = ""

for i in range(self.rows):

outStr += 'Row %s = %s\n' % (i+1, self.matrix[i])

return outStr

 

 

a = Matrix(4,4)

print a

a.setitem(3,4,'55.75')

print a

a.setitem(2,3,'19.1')

 

print a

print a.getitem(3,4)

 

print

for i, r, c in a:

print i[r][c]

print

x = 1.5

for i,r,c in a:

x = x*2.0

print x

i[r][c] = x

 

print a

 

# Output

>>> Row 1 = [0, 0, 0, 0]

Row 2 = [0, 0, 0, 0]

Row 3 = [0, 0, 0, 0]

Row 4 = [0, 0, 0, 0]

 

Row 1 = [0, 0, 0, 0]

Row 2 = [0, 0, 0, 0]

Row 3 = [0, 0, 0, '55.75']

Row 4 = [0, 0, 0, 0]

 

Row 1 = [0, 0, 0, 0]

Row 2 = [0, 0, '19.1', 0]

Row 3 = [0, 0, 0, '55.75']

Row 4 = [0, 0, 0, 0]

 

55.75

 

0

0

0

0

0

0

19.1

0

0

0

0

55.75

0

0

0

0

 

3.0

6.0

12.0

24.0

48.0

96.0

192.0

384.0

768.0

1536.0

3072.0

6144.0

12288.0

24576.0

49152.0

98304.0

Row 1 = [3.0, 6.0, 12.0, 24.0]

Row 2 = [48.0, 96.0, 192.0, 384.0]

Row 3 = [768.0, 1536.0, 3072.0, 6144.0]

Row 4 = [12288.0, 24576.0, 49152.0, 98304.0]

 

>>>