Python类转换实现环形队列

本文介绍如何使用Python创建一个固定大小的环形队列,当队列满时,新元素将覆盖最早添加的元素,常用于日志存储。通过类转换技巧,当环填满时,改变类的行为,实现高效且无性能损失的操作。
摘要由CSDN通过智能技术生成

定义一个固定大小的缓存,当它被填满时,新加入的元素自动覆盖第一个元素,这种方法经常用在存储日志和历史信息的程序中。


[root@xiaoxiong cb6]# cat cb2_6_11_sol_1.py 
class RingBuffer(object):
    """ class that implements a not-yet-full buffer """
    def __init__(self, size_max):
        self.max = size_max
        self.data = []
    class __Full(object):
        """ class that implements a full buffer """
        def append(self, x):
            """ Append an element overwriting the oldest one. """
            self.data[self.cur] = x
            self.cur = (self.cur+1) % self.max
        def tolist(self):
            """ return list of elements in correct order. """
            return self.data[self.cur:] + self.data[:self.cur]
    def append(self, x):
        """ append an element at the
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值