project_082_py05.py - test matrix rows/columns
#!/usr/bin/python3
# ====================================================================
# test matrix row/column
# I get lost sometimes and this reminds me of the order of row/column
# ====================================================================
# -------------------------------------------------------------------
# ---- display helper function - create title string
# ---- (standardized the title string format)
# -------------------------------------------------------------------
def title_str(title,length=65):
if not title:
t = '-' * length
elif len(title) > length:
t = title[:length]
else:
t = title + '-' * (length - len(title))
return t
# -------------------------------------------------------------------
# ---- display a matrix
# ---- note: not good for a large matrix. instead output a CSV
# ---- file and bring it into a spreadsheet
# ---- (or perhaps a JSON object/file?)
# -------------------------------------------------------------------
def display_matrix(mtx,title=None,max=65):
print(title_str(f'---- {title} ',max))
print(' ',end='')
for i in range(len(mtx[0])):
print(f'[{i:3}] ',end='')
print(' (col)')
for idx,row in enumerate(mtx):
print(f'[{idx:3}]',end='')
for r in row:
print(f' {r:>4},',end='')
print(' (row)')
print(title_str(None,max))
# -------------------------------------------------------------------
# ---- create and initialize to -1 a x-by-x matrix and
# ---- optionally set the diagonal
# ----
# ---- the resultant matrix index is: mtx[row][column]
# -------------------------------------------------------------------
def create_init_matrix(rows,cols,diag=None):
mtx = [ [-1 for i in range(cols)] for j in range(rows)]
if diag is not None:
for idx in range(size):
mtx[idx][idx] = diag
return mtx
# -------------------------------------------------------------------
# ---- main
# -------------------------------------------------------------------
# ---- test #1 -------------------------------------------------------
print()
mtx1 = create_init_matrix(4,4)
print('test #1')
print()
display_matrix(mtx1,title=f'rows={len(mtx1)},cols={len(mtx1[0])}')
# ---- test #2 -------------------------------------------------------
print()
mtx2 = create_init_matrix(2,4)
print('test #2')
print()
display_matrix(mtx2,title=f'rows={len(mtx2)},cols={len(mtx2[0])}')
# ---- test #3 -------------------------------------------------------
cols = 4
rows = 3
dat = [ [' 0,0',' 0,1',' 0,2',' 0,3'],
[' 1,0',' 1,1',' 1,2',' 1,3'],
[' 2,0',' 2,1',' 2,2',' 2,3'] ]
print()
print('test #3A')
print()
print('print using: "for i in range(len(dat))"')
print()
for i in range(len(dat)):
print(f'row[{i}] dat={dat[i]}')
print()
print('test #3B')
print()
print(f'create matrix: "create_init_matrix({rows},{cols})"')
print()
mtx4 = create_init_matrix(rows,cols)
display_matrix(mtx4,title=f'rows={rows},cols={cols}')
print()
print('test #3C')
print()
print(f'create matrix: insert data into ({rows},{cols}) matrix')
print(' mtx4[r][c] = dat[r][c]')
print()
for r in range(rows):
for c in range(cols):
mtx4[r][c] = dat[r][c]
display_matrix(mtx4,title=f'rows={rows},cols={cols}')
Results
test #1
---- rows=4,cols=4 ------------------------------------
[ 0] [ 1] [ 2] [ 3] (col)
[ 0] -1, -1, -1, -1, (row)
[ 1] -1, -1, -1, -1, (row)
[ 2] -1, -1, -1, -1, (row)
[ 3] -1, -1, -1, -1, (row)
-------------------------------------------------------
test #2
---- rows=2,cols=4 ------------------------------------
[ 0] [ 1] [ 2] [ 3] (col)
[ 0] -1, -1, -1, -1, (row)
[ 1] -1, -1, -1, -1, (row)
-------------------------------------------------------
test #3A
print using: "for i in range(len(dat))"
row[0] dat=[' 0,0', ' 0,1', ' 0,2', ' 0,3']
row[1] dat=[' 1,0', ' 1,1', ' 1,2', ' 1,3']
row[2] dat=[' 2,0', ' 2,1', ' 2,2', ' 2,3']
test #3B
create matrix: "create_init_matrix(3,4)"
---- rows=3,cols=4 ------------------------------------
[ 0] [ 1] [ 2] [ 3] (col)
[ 0] -1, -1, -1, -1, (row)
[ 1] -1, -1, -1, -1, (row)
[ 2] -1, -1, -1, -1, (row)
-------------------------------------------------------
test #3C
create matrix: insert data into (3,4) matrix
mtx4[r][c] = dat[r][c]
---- rows=3,cols=4 ------------------------------------
[ 0] [ 1] [ 2] [ 3] (col)
[ 0] 0,0, 0,1, 0,2, 0,3, (row)
[ 1] 1,0, 1,1, 1,2, 1,3, (row)
[ 2] 2,0, 2,1, 2,2, 2,3, (row)
-------------------------------------------------------