尝试将列表中的所有项目打印到行和列

时间:2021-02-23 00:14:51

标签: python list format multiple-columns rows

所以我试图将列表中的项目打印到 18x4 矩阵或表格中。我试过使用格式来做,但似乎没有用。

enter image description here

这是我想从列表中获得的所需输出,但我不确定如何打印一列中的前 18 个项目,然后打印第二列中的下一个 18 个项目,依此类推。我希望描述足够清楚,因为英语不是我的第一语言。任何帮助将不胜感激。

enter image description here

3 个答案:

答案 0 :(得分:1)

对行和列使用嵌套循环。在内部循环中,使用 18 的步幅获取从第一列中的索引开始的每 18 个元素。

for i in range(18):
    for j in range(i, len(wireless_node_list), 18):
        print(wireless_node_list[j], end='\t')
    print()

答案 1 :(得分:0)

您需要对输出的每一行进行布局。如果目标是具有目标列数,则确定要显示多少行需要一些基本的数学运算:

# Some sample data
values = [x / 7 for x in range(50)]

cols = 4
# Figure out how many rows are needed
rows, extra = divmod(len(values), cols)
if extra > 0:
    # That means we need one final partial row
    rows += 1

# And show each row in turn
for row in range(rows):
    line = ""
    for col in range(cols):
        i = col * rows + row
        if i < len(values):
            line += f"{i:3d} {values[i]:3.9f}  "
    print(line)

输出:

  0 0.000000000   13 1.857142857   26 3.714285714   39 5.571428571  
  1 0.142857143   14 2.000000000   27 3.857142857   40 5.714285714  
  2 0.285714286   15 2.142857143   28 4.000000000   41 5.857142857  
  3 0.428571429   16 2.285714286   29 4.142857143   42 6.000000000  
  4 0.571428571   17 2.428571429   30 4.285714286   43 6.142857143  
  5 0.714285714   18 2.571428571   31 4.428571429   44 6.285714286  
  6 0.857142857   19 2.714285714   32 4.571428571   45 6.428571429  
  7 1.000000000   20 2.857142857   33 4.714285714   46 6.571428571  
  8 1.142857143   21 3.000000000   34 4.857142857   47 6.714285714  
  9 1.285714286   22 3.142857143   35 5.000000000   48 6.857142857  
 10 1.428571429   23 3.285714286   36 5.142857143   49 7.000000000  
 11 1.571428571   24 3.428571429   37 5.285714286  
 12 1.714285714   25 3.571428571   38 5.428571429  

答案 2 :(得分:0)

这有点蛮力,但应该有效。只需建立您的列表,然后对您的索引进行一些数学运算即可。

list = ["112312", "12321312", "9809809", "8374973498", "3827498734", "5426547", "08091280398", "ndfahdda", "ppoiudapp", "dafdsf", "huhidhsaf", "nadsjhfdk", "hdajfhk", "jkhjhkh", "hdjhkajhkj"]

build = {}
len = len(list)
rowCount = len//4 + 1
for i in range(rowCount):
    build[i] = []
    if i < len: build[i].append(list[i])
    if i + 4 < len: build[i].append(list[i + 4])
    if i + 8 < len: build[i].append(list[i + 8])
    if i + 12 < len: build[i].append(list[i + 12])

print(build)

这个小样本对我来说很好。