[Python-Dev] Proposal: new list function: pack

paul bedaride paul.bedaride at gmail.com
Fri Mar 20 14:35:10 CET 2009


I propose a new function for list for pack values of a list and
sliding over them:

then we can do things like this:
for i, j, k in pack(range(10), 3, partialend=False):
    print i, j, k

I propose this because i need a lot of times pack and slide function
over list and this one
combine the two in a generator way.

def pack(l, size=2, slide=2, partialend=True):
    lenght = len(l)
    for p in range(0,lenght-size,slide):
        def packet():
            for i in range(size):
                yield l[p+i]
        yield packet()
    p = p + slide
    if partialend or lenght-p == size:
        def packet():
            for i in range(lenght-p):
                yield l[p+i]
        yield packet()

a = range(10)
print a
print 'pack(a, 2, 2,  True):',  [list(p) for p in pack(a, 2, 2, True)]
print 'pack(a, 2, 2, False):',  [list(p) for p in pack(a, 2, 2, False)]
print 'pack(a, 2, 3,  True):', [list(p) for p in pack(a, 2, 3, True)]
print 'pack(a, 2, 3, False):', [list(p) for p in pack(a, 2, 3, False)]
print 'pack(a, 3, 2,  True):', [list(p) for p in pack(a, 3, 2, True)]
print 'pack(a, 3, 2, False):', [list(p) for p in pack(a, 3, 2, False)]
print 'pack(a, 3, 3,  True):', [list(p) for p in pack(a, 3, 3, True)]
print 'pack(a, 3, 3, False):', [list(p) for p in pack(a, 3, 3, False)]

paul bedaride


More information about the Python-Dev mailing list