我有一个数字列表,它是OCR操作的输出数据。 有40个整数,我想以矩阵(8x5)的形式打印它们。 任何人都可以帮我在Python 2.7中如何做到这一点? 我不想手动输入元素..使用for循环生成元素列表,我只想以8x5矩阵的形式显示它们。
谢谢
答案 0 :(得分:2)
只需使用list comprehension和range()
功能。
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]))
答案 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