如何在 Python 中打印具有指定列宽的列表?

Posted

技术标签:

【中文标题】如何在 Python 中打印具有指定列宽的列表?【英文标题】:How to print a list with specified column width in Python? 【发布时间】:2017-10-30 14:37:41 【问题描述】:

我有一个类似的列表

mylist = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

如何打印指定列宽的列表

比如我想打印column = 5然后换行

print(mylist, column= 5)
[ 1,  2,  3,  4,  5, 
  6,  7,  8,  9, 10, 
 11, 12, 13, 14, 15, 
 16, 17, 18, 19, 20]

或者我想打印column = 10 然后换行

print(mylist, column= 10)
[ 1,  2,  3,  4,  5, 6,  7,  8,  9, 10, 
 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

我知道我可以使用 for-loop 来做到这一点,但我想知道是否有一个函数可以做到这一点?

【问题讨论】:

【参考方案1】:

使用 numpy 数组而不是列表并重塑您的数组。

>>> import numpy as np
>>> array = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])
>>>
>>> column = 5
>>> print(array.reshape(len(array)/column, column))
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]]
>>>>>> column = 10
>>> print(array.reshape(len(array)/column, column))
[[ 1  2  3  4  5  6  7  8  9 10]
 [11 12 13 14 15 16 17 18 19 20]]

当然,如果无法将array 划分为column 大小相等的列,这将抛出ValueError

【讨论】:

【参考方案2】:

不知道为什么,但我认为可以通过将行数固定为 -1 来使用 numpy array reshape 来完成我认为你想要实现的目标

import numpy as np
array=np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]) array
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,
       18, 19, 20])
array.reshape(-1,5)

给予

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20]])

array.reshape(-1,10)

给予

array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]])

【讨论】:

酷,我不知道 reshape 接受 -1 作为参数。更多信息:***.com/questions/18691084/…【参考方案3】:

您也可以使用切片来做到这一点。

mylist = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

def print_list(mylist, no_of_cols):
    start_index = 0
    for i in range(no_of_cols, len(mylist), no_of_cols):
        print mylist[start_index:i]
        start_index = i

    if len(mylist) > start_index:
        print mylist[start_index:len(mylist)]

print_list(mylist, 5)

【讨论】:

以上是关于如何在 Python 中打印具有指定列宽的列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作具有固定列宽的 chrome 尊重表

具有不同列宽的 XHTML 严格表

具有固定列宽的流动 flexbox 网格

不同列宽的QTableView

PyQt5:具有相等列宽的布局按钮

如何在数据表中设置某些列宽的列宽