在表格中垂直显示项目列表而非水平显示

4 投票
6 回答
6602 浏览
提问于 2025-04-15 20:43

我有一个按字母顺序排列的物品列表:

mylist = [a,b,c,d,e,f,g,h,i,j]

我可以把这个列表输出成一个横向的html表格,像这样:

| a , b , c , d |
| e , f , g , h |
| i , j ,   ,   |

那么,怎么才能把这个表格变成竖向的呢,像这样:

| a , d , g , j |
| b , e , h ,   |
| c , f , i ,   |

我在用python,不过你的答案可以用任何语言,甚至伪代码也可以。

6 个回答

0

这里有一个简单的解决方案,可以打印从0到N-1的数字(包括0和N-1):

import math

NROWS = 3
N = 22

for nr in xrange(NROWS):
    for nc in xrange(int(math.ceil(1.0 * N/NROWS))):
        num = nc * NROWS + nr
        if num < N:
            print num,
    print ''

这个代码只是打印数字,比如当 NROWS = 3N = 22 时,它会输出:

0 3 6 9 12 15 18 21 
1 4 7 10 13 16 19 
2 5 8 11 14 17 20 

当然,你可以很容易地调整这个代码,打印你想要的任何内容,并添加所需的格式。

1

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。

当我们提到“数据流”时,其实就是在说数据是如何从一个地方移动到另一个地方的。想象一下,你在厨房里,想把水从水龙头流到杯子里,这个流动的过程就叫做数据流。

在编程中,我们通常会用一些工具和方法来管理这些数据流。比如,有些编程语言提供了特定的函数或者库,可以帮助我们更方便地处理这些数据,就像厨房里的漏斗可以帮助你更容易地把水倒进杯子里。

所以,理解数据流的概念非常重要,因为它能帮助我们更好地组织和使用数据,让我们的程序运行得更加顺畅。

import itertools
def grouper(n, iterable, fillvalue=None):
    # Source: http://docs.python.org/library/itertools.html#recipes
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    return itertools.izip_longest(*[iter(iterable)]*n,fillvalue=fillvalue)

def format_table(L):
    result=[]
    for row in L:
        result.append('| '+', '.join(row)+' |')
    return '\n'.join(result)

L = ['a','b','c','d','e','f','g','h','i','j']
L_in_rows=list(grouper(3,L,fillvalue=' '))
L_in_columns=zip(*L_in_rows)
print(format_table(L_in_columns))
# | a, d, g, j |
# | b, e, h,   |
# | c, f, i,   |
9
>>> l = [1,2,3,4,5,6,7,8,9,10]
>>> [l[i::3] for i in xrange(3)]
[[1, 4, 7, 10], [2, 5, 8], [3, 6, 9]]
>>> [l[i::5] for i in xrange(5)]
[[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]

3换成你想要的结果行数:

撰写回答