Python覆盖和调整大小列表

时间:2016-09-05 15:34:47

标签: python arrays list

我想在固定大小的python中创建一个列表,让我们开始使用3。我有一个方法,每次调用方法时都会将数据写入此列表,我想将其添加到列表中,直到列表已满,一旦列表已满,它应该开始按升序覆盖列表中的数据(例如,从元素0开始。我还想添加一个增加数组长度的函数,即如果调用该方法,数组将从3开始增加到4号。如何进行其中任何一项?

3 个答案:

答案 0 :(得分:2)

这应该可以解决问题。有大量预先构建的模块具有类似的功能,但我认为最好是可以想象这个过程!

class SizedList(list):
    def __init__(self, size):
        list().__init__(self)
        self.__size = size
        self.__wrap_location = 0
        self.len = len(self)

    def append(self, *args, **kwargs):
        self.len = len(self)
        if self.len >= self.__size:
            if self.__wrap_location == self.__size-1:
                self.__wrap_location = 0
            self.__wrap_location += 1
            self.pop(self.__wrap_location)
            return self.insert(self.__wrap_location-1, *args)
        return list.append(self, *args, **kwargs)

    def increase_size(self, amount=1):
        self.__size += 1

答案 1 :(得分:2)

这个简单的解决方案应该:

def add(l, item, max_len):
    l.insert(0, item)
    return l[:max_len]

l = ["banana", "peanut", "bicycle", "window"]
l = add(l, "monkey", 3)

print(newlist)

打印:

> ['monkey', 'banana', 'peanut']

要编辑的列表(l),要添加的项目和列表的最大大小(max_len)是参数。

该项目将在索引0处添加,而列表仅限于max_len。

答案 2 :(得分:0)

这是我最终如何去做的。我设置了一个名为length_list的变量,该变量最初设置为3。

def add_to_list():

   if len(list) < length_list:
      append
   else:
      del list[0]
   self.add_to_list()

def increase_length():
    length_list += 1