我想将列表中的项目放在表的顺序索引处,列数由输入控制。我知道如何通过在每列末尾增加或重置整数来以“无聊”的方式做到这一点,但我认为使用 Python 的itertools库可能有一种更优雅的方式来做到这一点。
考虑这个列表:
items = ["Apple", "Orange", "Pear", "Strawberry", "Banana"]
这是无聊的方式:
def table_indexes(items, ncol):
col = 0
row = 0
for item in items:
yield (col, row)
col += 1
if col >= ncol:
# end of row
col = 0
row += 1
这将产生将项目放置在下表索引中的索引:
| Apple | Orange |
| Pear | Strawberry |
| Banana | |
我想在itertools其他地方或其他地方找到一个函数,它可以产生一系列索引对,其中每对中的一个索引重复地循环通过一系列数字(列号),并且每次第一个循环重复时另一个索引增加 1 ? 像这样:
def table_indexes(items, ncol):
cols = ... # e.g. itertools.cycle(range(ncol))
rows = ... # needs to be an iterator yielding sequences of [i]*ncol where i is the current row index
yield zip(cols, rows):
解决方案可以扩展到N维吗?
交互式爱情
相关分类