打印相当特定的矩阵

时间:2013-09-24 15:37:43

标签: python matrix printing

我有一个包含148个条目的列表。每个条目都是一个四位数字。我想把结果打印出来:

1    14    27    40
2    15    28    41
3    16    29    42
4    17    30    43
5    18    31    44
6    19    32    45
7    20    33    46
8    21    34    47
9    22    35    48
10   23    36    49
11   24    37    50
12   25    38    51
13   26    39    52
53
54
55... and so on

我有一些适用于前13行和4列的代码:

kort_identifier = [my_list_with_the_entries]
print_val = 0
print_num_1 = 0
print_num_2 = 13
print_num_3 = 26
print_num_4 = 39

while (print_val <= 36):
    print kort_identifier[print_num_1], '%10s' % kort_identifier[print_num_2], '%10s' % kort_identifier[print_num_3], '%10s' % kort_identifier[print_num_4]
    print_val += 1
    print_num_1 += 1
    print_num_2 += 1
    print_num_3 += 1
    print_num_4 += 1

我觉得这是一个糟糕的解决方案,必须有一个更好,更简单的方法。我在这里搜索过(搜索打印表格和矩阵)并尝试了这些解决方案,但似乎没有一个可以解决我需要的奇怪的表/矩阵行为。

请指出正确的方向。

2 个答案:

答案 0 :(得分:2)

有点棘手,但你走了。我选择操纵列表,直到它具有正确的形状,而不是乱用索引。

lst = range(1, 149)
lst = [lst[i:i+13] for i in xrange(0, len(lst), 13)]
lst = zip(*[lst[i] + lst[i+4] + lst[i+8] for i in xrange(4)])

for row in lst:
    for col in row:
        print col,
    print

答案 1 :(得分:2)

这可能有些过分,但你可以制作一个numpy数组。

import numpy as np
x = np.array(kort_identifier).reshape(2, 13, 4)
for subarray in x:
    for row in subarray:
        print row