[Tutor] converting to Ascii from hex [writing a group() function]

Danny Yoo dyoo@hkn.eecs.berkeley.edu
Fri, 8 Feb 2002 01:26:52 -0800 (PST)


On Fri, 8 Feb 2002, Danny Yoo wrote:

> This looks good.  If we want, we can write a few functions to tease out
> some of the functionality.  A large part of the program appears to try
> grouping pairs of elements in the sequence. We can generalize the grouping
> by writing a function like this:
> 
> ###
> def group(seq, n=2):
>     """Given a sequence 'seq', returns a list that clumps up
>     'n' adjacent elements together.  By default, n=2."""
>     pieces = []
>     for i in range(len(seq) / n):
>         pieces.append(seq[i*n : (i+1)*n])
>     return pieces
> ###


Hmmm... I should be careful about the division here, since Python is bound
to transition off to use true division, sooner or later.  Here's another
version of the group() function:


###
def group(seq, n=2):
    """Given a sequence 'seq', returns a list that clumps up
    'n' adjacent elements together.  By default, n=2."""
    pieces = []
    for i in range(int(len(seq) / n)):
        pieces.append(seq[i*n : (i+1)*n])
    return pieces
###


There!  This also makes explicit the fact that we do want to do a
truncation, so that group() always has groups that are 'n' elements long.  
For example:

###
>>> group(['key1', 'value1', 'key2', 'value2', 'key3'])
[['key1', 'value1'], ['key2', 'value2']]
###

will make sure that we ignore any trailing pieces of a sequence when we're
doing a grouping.