对于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)格式?对于这个愚蠢的问题再次感到抱歉,并且非常感谢您的任何帮助!
答案 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))