Python 分组显示列

标签 python iteration

我有一组数据

data = (1,2,3,4,5,6,7,8,9,10)

通常在 python 中,我会将它们分组以便在 n 列的行中显示:

cols = 4
grouped = izip_longest(*(iter(data),)*cols)

这给了我一个很棒的行显示:

grouped = ( (1,2,3,4), (5,6,7,8), (9,10,None,None) )

在模板网站上,它看起来像

1  2  3  4
5  6  7  8
9  10

现在我正尝试将头转向不同的显示器 - 沿着列向下并跨 n

1  4  7  10
2  5  8  
3  6  9

因为这是用于 Web 模板,所以我需要生成一组此类数据:

grouped = ( (1,4,7,10), (2,5,8,None), (3,6,9,None) )

老实说,我完全不知道如何最好地解决这个问题。

最佳答案

您只需调用zip()即可:

In [10]: rows = 3

In [11]: zip(*itertools.izip_longest(*(iter(data),)*rows))
Out[11]: [(1, 4, 7, 10), (2, 5, 8, None), (3, 6, 9, None)]

基本上它使用的算法和你的一模一样,然后transposes结果。

关于Python 分组显示列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13730403/

相关文章:

python - 如何遍历 Jinja 模板中的字典列表?

c - 使用 C 和 GSList 迭代文件夹读取

python - 如何从 2017.0、2018.0、2019.0 等中删除 .0?

python - 对象在 AR (Aruco + OpenGL) 中错位

python - 从字典列表中获取值列表?

python - 解释 : Every generator is an iterator, 而不是反之

java - 我正在尝试制作一个图案(java中的三角形)

python - 将变量传递给 Python Flask 表单

Python:如何从不满足特定条件的元素创建列表

python - 计算 Pandas 数据框中的唯一名称