休闲代码,性能和功能都不如 deque
真正使用请优先考虑例如 collections.deque 之类的方法库,因为我写的这个效率太低,相比之下。
只是突然想到类似需求,想自己捋捋思路,就写了一个
class FLenList(object):
def __init__(self, length: int):
assert isinstance(length, int) and length > 0, "请给我一个大于零的整数来指定长度"
self.len = length
self.data = [None] * self.len
self.hand = 0
self.handleft = -1
def append(self, obj):
if self.data[self.handleft] is not None:
self.handleft = (self.handleft + 1) % self.len
self.data[self.hand] = obj
self.hand = (self.hand + 1) % self.len
def appendleft(self, obj):
if self.data[self.hand] is not None:
self.hand = (self.hand - 1) % self.len
self.data[self.handleft] = obj
self.handleft = (self.handleft - 1) % self.len
def __len__(self):
return self.len
def get(self):
ret = self.data[self.hand:]
ret.extend(self.data[:self.hand])
return ret
想添加长度没达到指定最大长度时的效果,嫌麻烦就不写了,反正也用不上