lists.py

来自「bittorrent source by python. please enj」· Python 代码 · 共 56 行

PY
56
字号
# QList:# basically a python 2.3 compatible interface if you want deque## SizedList:# handy class for keeping a fixed-length history# uses deque if available## by Greg Hazeltry:    from collections import deque    base_list_class = deque    popleft = deque.popleft    clear = deque.clearexcept ImportError:    from UserList import UserList    base_list_class = UserList    def popleft(l):        return l.pop(0)    def clear(l):        l[:] = []class QList(base_list_class):    def __init__(self, *a, **kw):        base_list_class.__init__(self, *a, **kw)    def popleft(self):        return popleft(self)    def clear(self):        return clear(self)    # dequeu doesn't have __add__ ?    def __add__(self, l):        n = base_list_class(self)        n.extend(l)        return n# I use QList becuase deque.popleft is faster than list.pop(0)class SizedList(QList):    def __init__(self, max_items):        self.max_items = max_items        QList.__init__(self)    def append(self, v):        QList.append(self, v)        if len(self) > self.max_items:            self.popleft()                    if __name__ == '__main__':    l = SizedList(10)    for i in xrange(50):        l.append(i)    assert list(l) == range(40, 50)    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?