如何以矩阵形式存储和打印数字列表(python)

时间:2015-07-05 16:10:26

标签: python matrix

我有一个数字列表,它是OCR操作的输出数据。 有40个整数,我想以矩阵(8x5)的形式打印它们。 任何人都可以帮我在Python 2.7中如何做到这一点? 我不想手动输入元素..使用for循环生成元素列表,我只想以8x5矩阵的形式显示它们。

谢谢

3 个答案:

答案 0 :(得分:2)

只需使用list comprehensionrange()功能。

my_list = [1, 2, 3, ..., 40]
array = [[my_list[j*5 + i] for i in range(5)] for j in range(8)]

然后,您可以使用任何函数将其显示为矩阵:

for row in array:
    print(row)

如果你需要矩阵很好地"显示,您可以使用HappyLeapSecond's solution

print('\n'.join([''.join(['{:4}'.format(item) for item in row]) 
      for row in array]))

参见示例:https://ideone.com/yOk1I5

答案 1 :(得分:0)

另一种解决方案:

def print_matrix(numbers, n):
    res = ''
    for i in range(len(numbers)):
        res += '{:2} '.format(numbers[i])
        if (i + 1) % n == 0:
            res += '\n'
    print(res)

输出:

>>> print_matrix([i for i in range(40)], 5)
 0  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

答案 2 :(得分:0)

欢迎使用stackoverflow!以下内容适用于8x5显示屏:

import random, itertools

#  Create a list of 40 random integers    
l_ocr = random.sample(xrange(1024), 8*5)

# Read 8 integers out of the list at a time
for row in itertools.izip(*([iter(l_ocr)] * 8)):
    # For each integer in the row, print it right aligned
    for col in row:
        print "{:>6d} ".format(col),
    print   # Newline after each row

,并提供:

   325     631     967     289     700     754     602     550 
   641      55     476     805     442     964     412     823 
   621     559     276     333     903     956     206     875 
   630     138     732     487     930     254     464     161 
   422     201     723     353     853     147     523     510