【问题标题】:How do I print out a list as a matrix?如何将列表打印为矩阵?
【发布时间】:2013-11-25 00:20:20
【问题描述】:

对于新手级别的问题,我很抱歉,但我正在尝试列出 10 个名称并将它们放入 3x4 矩阵中,但是当值的输入由 a 完成时,我不确定如何执行此操作循环。

所以我没有去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)格式?再次为这个愚蠢的问题道歉,非常感谢您的帮助!

【问题讨论】:

  • 我理解正确吗:10 个名字放入 3x4 矩阵?怎么搭配?逐行?按列?
  • 遍历列表;每第三次迭代添加一个换行符
  • @gongzhitaao,哈哈,好点,我用了2个空槽,之前忘了提。如果这太难了,我可以添加 2 个名字。

标签: python list matrix


【解决方案1】:

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

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

【讨论】:

    【解决方案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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      相关资源
      最近更新 更多