将字符串数组垂直列出到多列中

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

我正在尝试列出以格式垂直排序的多列

ADG

B E H

C F

但我不知道如何从我目前的做法中改变它,这只是水平排序

A B C

D E F

GH

lines = (' '.join(justifyList[i:i + cols])
             for i in range(0, len(justifyList), cols))
    
return "\n".join(lines)

列表的大小和列数可能会发生变化。有没有办法轻松更改格式?

python-3.x
1个回答
0
投票

这取决于数据的结构,但假设您有多个数组,每个数组指示一列,我发现这段代码有效:

cols = [
    ['A', 'B', 'C'],
    ['D', 'E'],
    ['F', 'G', 'H', 'I']
]

max_length = max(len(col) for col in cols)

for col in cols:
    while len(col) < max_length:
        col.append(" ")

rows = [[] for _ in range(max_length)]
for col in cols:
    for i, value in enumerate(col):
        rows[i].append(value)

for row in rows:
    print(" ".join(row)) 

该解决方案不仅提供垂直转置,还确保每个生成的行与其原始列保持一致,这是通过插入空格来完成的。

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