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