gpt4 book ai didi

Python:将列表拆分为定义大小的 block 并填充其余部分

转载 作者:太空狗 更新时间:2023-10-30 02:35:16 25 4
gpt4 key购买 nike

我想将我的列表拆分成列数相同的行,我正在寻找实现此目的的最佳(最优雅/pythonic)方法:

>>> split.split_size([1,2,3], 5, 0)
[[1, 2, 3, 0, 0]]

>>> split.split_size([1,2,3,4,5], 5, 0)
[[1, 2, 3, 4, 5]]

>>> split.split_size([1,2,3,4,5,6], 5, 0)
[[1, 2, 3, 4, 5], [6, 0, 0, 0, 0]]

>>> split.split_size([1,2,3,4,5,6,7], 5, 0)
[[1, 2, 3, 4, 5], [6, 7, 0, 0, 0]]

这就是我到目前为止想出的:

def split_size(l, size, fillup):
"""
splits list into chunks of defined size, fills up last chunk with fillup if below size
"""
# len(l) % size or size
# does i.e. size=5: 3->2, 4->1, 5->0
stack = l + [fillup] * (size - (len(l) % size or size))
result = []
while len(stack) > 0:
result.append(stack[:5])
del stack[:5]
return result

我相信一定有一些更聪明的解决方案。特别是对于“逆模”部分: len(l) % 尺寸或尺寸必须有一个更易读的方法来做到这一点,不是吗?

最佳答案

itertools recipe所谓的石斑鱼做你想做的事:

def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)

关于Python:将列表拆分为定义大小的 block 并填充其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3703677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com