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]

 

>>>

“””