2014年3月7日 星期五

006 Python Cookbook 01-03 Last N Items

#!/usr/bin/env python

# http://chimera.labs.oreilly.com/books/1230000000393/ch01.html#_keeping_the_last_n_items

# Keeping the Last N Items



#!/usr/bin/env python

# http://chimera.labs.oreilly.com/books/1230000000393/ch01.html#_keeping_the_last_n_items

from collections import deque

print "----------"

def what_deque_look_like(inlist, size_limit=5):
    queue = deque(maxlen=size_limit)
    for i in xrange(1,10):
        queue.append(i)
        print queue
    for a in inlist:
        queue.append(a)
        print queue

what_deque_look_like(('a','b','c','d','e'))

print "----------"

def what_queue_look_like(inlist, size_limit=5):
    q = deque(maxlen=size_limit)
    for a in inlist:
        q.append(a)
        print 'q = ', q
    q.pop()
    print 'after q.pop(); q = ', q
    q.popleft()
    print 'after q.popleft(); q = ', q
    print 'q = ', q

what_queue_look_like((1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
----------
deque([1], maxlen=5)
deque([1, 2], maxlen=5)
deque([1, 2, 3], maxlen=5)
deque([1, 2, 3, 4], maxlen=5)
deque([1, 2, 3, 4, 5], maxlen=5)
deque([2, 3, 4, 5, 6], maxlen=5)
deque([3, 4, 5, 6, 7], maxlen=5)
deque([4, 5, 6, 7, 8], maxlen=5)
deque([5, 6, 7, 8, 9], maxlen=5)
deque([6, 7, 8, 9, 'a'], maxlen=5)
deque([7, 8, 9, 'a', 'b'], maxlen=5)
deque([8, 9, 'a', 'b', 'c'], maxlen=5)
deque([9, 'a', 'b', 'c', 'd'], maxlen=5)
deque(['a', 'b', 'c', 'd', 'e'], maxlen=5)
----------
q =  deque([1], maxlen=5)
q =  deque([1, 2], maxlen=5)
q =  deque([1, 2, 3], maxlen=5)
q =  deque([1, 2, 3, 4], maxlen=5)
q =  deque([1, 2, 3, 4, 5], maxlen=5)
q =  deque([2, 3, 4, 5, 6], maxlen=5)
q =  deque([3, 4, 5, 6, 7], maxlen=5)
q =  deque([4, 5, 6, 7, 8], maxlen=5)
q =  deque([5, 6, 7, 8, 9], maxlen=5)
q =  deque([6, 7, 8, 9, 10], maxlen=5)
after q.pop(); q =  deque([6, 7, 8, 9], maxlen=5)
after q.popleft(); q =  deque([7, 8, 9], maxlen=5)
q =  deque([7, 8, 9], maxlen=5)

沒有留言:

張貼留言