gpt4 book ai didi

Python 优化 Grouper 函数以避免 None 元素

转载 作者:太空狗 更新时间:2023-10-30 01:51:55 25 4
gpt4 key购买 nike

你好,我正在使用 Python 的 itertools 中的 Grouper 函数来削减大块的 select where in(idlist) 查询以提高 sqlite 性能。问题是石斑鱼填满了 chunksize 的整个空间,即使列表小得多,所以我不得不添加一个循环和比较,现在我想优化。

# input list shorter than grouper chunk size
input = (1,2,3,4,5)

grouper(10,input)
# desired output = (1,2,3,4,5)
# actual output = (1,2,3,4,5,None,None,None,None,None)

# current fix for this issue
list_chunks = tuple(tuple(n for n in t if n) for t in grouper(10, input))

我认为必须有一种方法可以在没有这种循环和比较的情况下做到这一点。

注意:使用python 2.5

最佳答案

如果不是过滤掉 None 条目,重写 grouper() 以返回您想要的是一个选项,您可以使用 itertools 使用以下解决方案.islice:

def grouper(n, iterable):
it = iter(iterable)
x = tuple(islice(it, n))
while x:
yield x
x = tuple(islice(it, n))

或更短的等价物(更难理解):

def grouper(n, iterable):
it = iter(iterable)
return iter(lambda: tuple(islice(it, n)), ())

例子:

>>> list(grouper(5, range(12)))
[(0, 1, 2, 3, 4), (5, 6, 7, 8, 9), (10, 11)]

关于Python 优化 Grouper 函数以避免 None 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12185952/

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