Vale
Vale

Reputation: 1033

How do I print out a list as a matrix?

Sorry for the noob-level question, but I'm trying to take a list of 10 names and put them into a 3x4 matrix, but I'm unsure how to do this when the input of the values was made by a loop.

So instead of going student0 = raw_input("Enter student 1's name: ") ten times I have

students = []
for num in range(1, 11):
  students.append({
    "name": raw_input("Enter Student %i's name: " % num),
    "absences": raw_input("Enter Student %i's absences: " % num)
  })

but with the second (and more preferred) form, I don't know how to make the matrix. Before I could just type something like:

print("\n\n Student Seating: \n")
matrix = [[student0 + '\t\t', student1 + '\t\t', student2 + '\t\t'], [student3 + '\t\t', student4 + '\t\t', student5 + '\t\t'], [student6 + '\t\t', 'Empty' + '\t\t', student7 + '\t\t'], ['Empty' + '\t\t', student8 + '\t\t', student9 + '\t\t']]
for row in matrix:
    print ' '.join(row)

But now (obviously) that doesn't work.. How would I fix this so I can take my list and put it into matrix (3x4) format? Sorry again for the stupid question, and thanks very much in advance for any help!

Upvotes: 3

Views: 13110

Answers (2)

slider
slider

Reputation: 12990

You could do this to partition groups of students into sub lists.

>>> students = [1,2,3,4,5,6,7,8,9,10] # assume numbers are students
>>> matrix = [ students[i:i+4] for i in range(0,len(students),4) ]
>>> for l in matrix:
...     print l
... 
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10]

This has the advantage that no matter what the size of your students list, matrix will always have a max width 4.

Upvotes: 4

gongzhitaao
gongzhitaao

Reputation: 6682

If you are comfortable with NumPy,

import numpy as np

a = np.array([0,1,2,3,4,5,6,7,8,9,-1,-1])
print a.reshape((3,4))

Upvotes: 2

Related Questions