python - Python 列表如何按列打印?

标签 python list multiple-columns

我想在指定数量的对齐列中显示一个简单的列表。例如,下面的列表显示为 14 列,列之间的空格数在 3 和 1 之间变化:

a = [
         1,    2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,
        15,   16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,
        29,   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,
        43,   44,  45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,
        57,   58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,
        71,   72,  73,  74,  75,  76,  77,  78,  79,  80,  81,  82,  83,  84,
        85,   86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96,  97,  98,
        99,  100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
        113, 114, 115, 116, 117, 118, 119, 120
    ]

我最初的尝试如下:

for a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 in zip(*[iter(a)] * 14):
    print(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)

但是,这会导致列未对齐和缺少列表元素:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
15 16 17 18 19 20 21 22 23 24 25 26 27 28
29 30 31 32 33 34 35 36 37 38 39 40 41 42
43 44 45 46 47 48 49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80 81 82 83 84
85 86 87 88 89 90 91 92 93 94 95 96 97 98
99 100 101 102 103 104 105 106 107 108 109 110 111 112

这是怎么做到的?

最佳答案

您可以使用一些字符串格式:

from itertools import izip_longest

width = 14  
for lst in izip_longest(*[iter(a)]*width, fillvalue=''):
  print(('{:3} '*width).format(*lst))

记得使用itertools.izip_longest而不是 zip 所以列表中的所有项目都被打印出来,解决了丢失项目的问题。


  1   2   3   4   5   6   7   8   9  10  11  12  13  14 
 15  16  17  18  19  20  21  22  23  24  25  26  27  28 
 29  30  31  32  33  34  35  36  37  38  39  40  41  42 
 43  44  45  46  47  48  49  50  51  52  53  54  55  56 
 57  58  59  60  61  62  63  64  65  66  67  68  69  70 
 71  72  73  74  75  76  77  78  79  80  81  82  83  84 
 85  86  87  88  89  90  91  92  93  94  95  96  97  98 
 99 100 101 102 103 104 105 106 107 108 109 110 111 112 
113 114 115 116 117 118 119 120 

关于python - Python 列表如何按列打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44806183/

相关文章:

python - Pandas - 根据组值和列值有效地连接行

Python:为 ConvNet 创建具有多个 channel 的时间序列

python - TextVariable 不工作

sql-server - SQL Server : "MoSTLy-unique" index

excel - VBA代码匹配多列中的值,然后将相应的值转置到单独的列

python - 按列将函数应用于 Pandas 数据框

python - 使用 ctypes 在共享库中免费调用

python-3.x - Python - 如何递归搜索作为列表元素的文本中的变量子字符串

Python - 在列表中找到最接近0的整数

java - 在 Java 中初始化二维列表