如何将列表打印为矩阵?

时间:2013-11-25 00:20:20

标签: python list matrix

对于noob级别的问题感到抱歉,但我正在尝试列出10个名称并将它们放入3x4矩阵中,但我不确定如何在输入值时通过循环。

所以我没有去过student0 = raw_input("Enter student 1's name: ")十次

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)
  })

但是使用第二种(也是更优选的)形式,我不知道如何制作矩阵。在我输入类似的内容之前:

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)

但是现在(显然)不起作用..我如何解决这个问题,以便我可以将我的列表放入矩阵(3x4)格式?对于这个愚蠢的问题再次感到抱歉,并且非常感谢您的任何帮助!

2 个答案:

答案 0 :(得分:3)

您可以这样做以将学生组划分为子列表。

>>> 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]

这样做的好处是,无论students列表的大小如何,matrix的最大宽度都是4。

答案 1 :(得分:2)

如果您对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))