user2829468 - 7 months ago 33
Python Question

# How to make matrices in Python?

I've googled it and searched StackOverflow and YouTube.. I just can't get matrices in Python to click in my head. Can someone please help me? I'm just trying to create a basic 5x5 box that displays:

``````A A A A A
B B B B B
C C C C C
D D D D D
E E E E E
``````

I got

``````a b c d e
a b c d e
a b c d e
a b c d e
a b c d e
``````

To display but I couldn't even get them to break lines that, instead all they would appear as

``````[['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E']]
``````

And if I try to add \n to them or print "" etc it just doesn't work.. \n will display as 'A\n' and print will display before the matrix.

Please someone help me, even if you direct me to somewhere that should be really obvious and make me look like an idiot, I just want to learn this.

Looping helps:

``````for row in matrix:
print ' '.join(row)
``````

or use nested `str.join()` calls:

``````print '\n'.join([' '.join(row) for row in matrix])
``````

Demo:

``````>>> matrix = [['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E']]
>>> for row in matrix:
...     print ' '.join(row)
...
A B C D E
A B C D E
A B C D E
A B C D E
A B C D E
>>> print '\n'.join([' '.join(row) for row in matrix])
A B C D E
A B C D E
A B C D E
A B C D E
A B C D E
``````

If you wanted to show the rows and columns transposed, transpose the matrix by using the `zip()` function; if you pass each row as a separate argument to the function, `zip()` recombines these value by value as tuples of columns instead. The `*args` syntax lets you apply a whole sequence of rows as separate arguments:

``````>>> for cols in zip(*matrix):  # transposed
...     print ' '.join(cols)
...
A A A A A
B B B B B
C C C C C
D D D D D
E E E E E
``````
Source (Stackoverflow)