如何以连续行的网格格式打印列表?

问题描述 投票:0回答:1

我正在寻找一种方法来打印(绘制)一个或多个带有连续线的网格,并在每个方格内打印 NxN 列表中的值。我在this线程中发现了类似的东西,但在这种情况下他们正在加载图像。

就我而言,如果我有偶数个(本例中为 4 个)5x5 的 2D 列表,我想打印如下图所示的图像(不是像 Markdown 格式那样使用“---+---”,而是使用连续线)。如何才能做到这一点。预先感谢。

list1 = [[258,658,937,560,455],[868,108,638,992,392],[649,370,825,773,751],[507,734,894,658,442],[157,831,619,614,707]]
list2 = [[130,637,502,634,901],[232,340,820,609,323],[979,549,551,116,839],[591,471,310,865,872],[969,300,321,113,218]]
list3 = [[109,908,748,165,572],[450,540,261,991,231],[327,379,965,566,932],[280,950,862,159,710],[137,450,158,441,139]]
list4 = [[987,470,155,487,851],[816,750,636,696,699],[826,264,654,114,728],[826,847,197,539,245],[915,269,821,755,552]]

python grid
1个回答
0
投票

由于您没有分享您尝试过的源代码,所以我很难为您提供解决方案。不过,我想出了解决方案,它对我有用。

def print_grid(lists):
    n = len(lists[0])
    row_separator = "+".join(["-" * 5] * n)

    for lst in lists:
        print("+" + row_separator + "+")
        for row in lst:
            print("|" + "|".join([f"{val: >4}" for val in row]) + "|")

    print("+" + row_separator + "+")

list1 = [[258, 658, 937, 560, 455], [868, 108, 638, 992, 392], [649, 370, 825, 773, 751], [507, 734, 894, 658, 442],
         [157, 831, 619, 614, 707]]
list2 = [[130, 637, 502, 634, 901], [232, 340, 820, 609, 323], [979, 549, 551, 116, 839], [591, 471, 310, 865, 872],
         [969, 300, 321, 113, 218]]
list3 = [[109, 908, 748, 165, 572], [450, 540, 261, 991, 231], [327, 379, 965, 566, 932], [280, 950, 862, 159, 710],
         [137, 450, 158, 441, 139]]
list4 = [[987, 470, 155, 487, 851], [816, 750, 636, 696, 699], [826, 264, 654, 114, 728], [826, 847, 197, 539, 245],
         [915, 269, 821, 755, 552]]

lists = [list1, list2, list3, list4]


print_grid(lists)

© www.soinside.com 2019 - 2024. All rights reserved.