如何将随机矩阵转换为表格?

0 投票
2 回答
557 浏览
提问于 2025-04-18 00:03

这是我得到的代码。

import random

def create_random_matrix(rows_min, rows_max, cols_min, cols_max):
    matrix = []

    # generate a random number for the number of rows
    # notice that randint works differently from similar functions
    # you have seen in that rows_min and rows_max are both inclusive
    # http://docs.python.org/3/library/random.html#random.randint
    rows = random.randint(rows_min, rows_max)

    for row in range(rows):
        # add a row to the matrix
        matrix.append([])

        # generate a random number for the number of columns
        cols = random.randint(cols_min, cols_max)

        # generate a random number between 1 and 100 for each
        # cell of the row
        for col in range(cols):
        matrix[row].append(random.randint(1, 100))

    # done
    return matrix

def print_matrix(twod_list):
    print(twod_list)

if __name__ == "__main__":

    random_matrix = create_random_matrix(8, 12, 3, 7)

    print_matrix(random_matrix)

这段代码会生成一个随机的矩阵,像这样:

[[52, 23, 11, 95, 79], [3, 63, 11], [5, 78, 3, 14, 37], [89, 98, 10], [24, 60, 80, 73, 84, 94], [45, 14, 28], [51, 19, 9], [43, 86, 63, 71, 19], [58, 6, 43, 17, 87, 64, 87], [77, 57, 97], [9, 71, 54, 20], [77, 86, 22]]

但是我该如何修改代码,让它输出像这样的内容呢?

36 83 35 73

28 11 3 45 30 44

39 97 3 10 90 5 42

55 73 56 27 7 37

84 49 35 43

100 20 22 95 75 25

58 81 26 34 41 44 72

32 23 21

31 37 1

95 90 26 6 78 49 22

5 17 31

86 25 73 56 10

2 个回答

0

只需要改变一下你打印的方式:

>>> for i in random_matrix:
...   print " ".join(str(j) for j in i)
... 
52 23 11 95 79
3 63 11
5 78 3 14 37
89 98 10
24 60 80 73 84 94
45 14 28
51 19 9
43 86 63 71 19
58 6 43 17 87 64 87
77 57 97
9 71 54 20

为了好玩,这里用一行代码来实现:

print "\n".join(" ".join(str(j) for j in i) for i in random_matrix)
0

这是一个简单的方法,可以帮助你打印出一个列表中的所有子列表的成员:

mymatrix = [[52, 23, 11, 95, 79], [3, 63, 11], [5, 78, 3, 14, 37], [89, 98, 10], [24, 60, 80, 73, 84, 94], [45, 14, 28], [51, 19, 9], [43, 86, 63, 71, 19], [58, 6, 43, 17, 87, 64, 87], [77, 57, 97], [9, 71, 54, 20], [77, 86, 22]]
for list in mymatrix:
    for item in list:
        print item,
    print

输出结果会像这样:

52 23 11 95 79
3 63 11
5 78 3 14 37
89 98 10
24 60 80 73 84 94
45 14 28
51 19 9
43 86 63 71 19
58 6 43 17 87 64 87
77 57 97
9 71 54 20
77 86 22

撰写回答