1

我有一个包含 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

我觉得这是一个糟糕的解决方案,必须有更好、更简单的方法来做到这一点。我已经在这里搜索(搜索打印表格和矩阵)并尝试了这些解决方案,但似乎没有一个适用于我需要的这种奇怪的表格/矩阵行为。

请指出我正确的方向。

4

2 回答 2

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
于 2013-09-24T15:51:53.807 回答
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
于 2013-09-24T15:55:47.427 回答