我想要一种算法来遍历列表切片。切片大小在功能之外设置,可以不同。
在我看来,这就像:
for list_of_x_items in fatherList: foo(list_of_x_items)
有没有一种list_of_x_items使用python 2.5正确定义的方法或其他方法?
list_of_x_items
edit1:澄清 “分区”和“滑动窗口”这两个术语听起来都适用于我的任务,但是我不是专家。因此,我将更深入地解释该问题并添加到问题中:
FatherList是我从文件中获取的一个多级numpy.array。函数必须找到序列的平均值(用户提供序列的长度)。为了求平均值,我正在使用mean()函数。现在进行问题扩展:
mean()
edit2: 如何修改您提供的用于存储额外项目的功能,并在将下一个父亲列表提供给该功能时使用它们?
例如,如果列表长度为10,块的大小为3,则存储列表的第十个成员并将其附加到下一个列表的开头。
问题更新:如何修改您提供的存储额外项目的功能,并在将下一个父亲列表提供给该功能时使用它们?
如果需要存储状态,则可以为此使用一个对象。
class Chunker(object): """Split `iterable` on evenly sized chunks. Leftovers are remembered and yielded at the next call. """ def __init__(self, chunksize): assert chunksize > 0 self.chunksize = chunksize self.chunk = [] def __call__(self, iterable): """Yield items from `iterable` `self.chunksize` at the time.""" assert len(self.chunk) < self.chunksize for item in iterable: self.chunk.append(item) if len(self.chunk) == self.chunksize: # yield collected full chunk yield self.chunk self.chunk = []
例:
chunker = Chunker(3) for s in "abcd", "efgh": for chunk in chunker(s): print ''.join(chunk) if chunker.chunk: # is there anything left? print ''.join(chunker.chunk)
输出:
abc def gh