小编典典

遍历列表切片

python

我想要一种算法来遍历列表切片。切片大小在功能之外设置,可以不同。

在我看来,这就像:

for list_of_x_items in fatherList:
    foo(list_of_x_items)

有没有一种list_of_x_items使用python 2.5正确定义的方法或其他方法?


edit1:澄清 “分区”和“滑动窗口”这两个术语听起来都适用于我的任务,但是我不是专家。因此,我将更深入地解释该问题并添加到问题中:

FatherList是我从文件中获取的一个多级numpy.array。函数必须找到序列的平均值(用户提供序列的长度)。为了求平均值,我正在使用mean()函数。现在进行问题扩展:

edit2: 如何修改您提供的用于存储额外项目的功能,并在将下一个父亲列表提供给该功能时使用它们?

例如,如果列表长度为10,块的大小为3,则存储列表的第十个成员并将其附加到下一个列表的开头。


有关:


阅读 250

收藏
2020-12-20

共1个答案

小编典典

回答问题的最后一部分:

问题更新:如何修改您提供的存储额外项目的功能,并在将下一个父亲列表提供给该功能时使用它们?

如果需要存储状态,则可以为此使用一个对象。

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
2020-12-20