【问题标题】:How to line up columns when printing from 2d array in Python? [duplicate]从 Python 中的二维数组打印时如何排列列? [复制]
【发布时间】:2015-10-12 13:03:06
【问题描述】:

我想以表格格式显示一个简单的二维数组,顶部带有标题,以便值在标题下方对齐。有没有办法做到这一点?我已经使用 numpy 查看了 pprint 和打印,但无法使其正常工作。这是我目前拥有的:

myArray = [['Student Name','Marks','Level'],['Johnny',68,4],['Jennifer',59,3],['William',34,2]]

for row in myArray:
    print(" ")
    for each in row:
        print(each,end = ' ')

有什么建议吗?

【问题讨论】:

  • ^^该代码在 IMO 中很糟糕(但效果很好)。我会使用 Format 参数。查看此网站以了解填充的工作原理。只需将您的填充设置为最大的字符串pyformat.info

标签: python arrays 2d pprint


【解决方案1】:

你只需要根据最长元素的长度对齐即可:

myArray = [['Student Name','Marks','Level'],['Johnny',68,4],['Jennifer',59,3],['William',34,2]]
mx = len(max((sub[0] for sub in myArray),key=len))

for row in myArray:
    print(" ".join(["{:<{mx}}".format(ele,mx=mx) for ele in row]))

输出:

Student Name Marks        Level       
Johnny       68           4           
Jennifer     59           3           
William      34           2 

在最大长度计算中包含 int 值:

mx = max((len(str(ele)) for sub in myArray for ele in sub))
for row in myArray:
    print(" ".join(["{:<{mx}}".format(ele,mx=mx) for ele in row]))

输出:

Student Name Marks        Level       
Johnny       68           4           
Jennifer     59           3           
William      34           2       

【讨论】:

  • 谢谢你,它比我刚刚从上一个答案中使用的要简单得多。我对这些类型的理解语句不太熟悉(它们是这样称呼的吗?)。我可以看到代码的打印行是如何工作的,请问第一行中的 max 和 key=len 是做什么的?
  • 没有问题,看起来确实有点复杂。
猜你喜欢
  • 2017-05-22
  • 2016-02-25
  • 2016-07-26
  • 1970-01-01
  • 2020-07-29
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多