>> I'm looking for a way to iterate through a list, two (or more) items
    >> at a time.  Basically...
    >> 
    >> myList = [1,2,3,4,5,6]
    >> 
    >> I'd like to be able to pull out two items at a time...

    Dan> def pair_list(list_):
    Dan>     return [list_[i:i+2] for i in xrange(0, len(list_), 2)]

Here's another way (seems a bit clearer to me, but each person has their own
way of seeing things):

    >>> import string
    >>> string.letters
    'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    >>> zip(string.letters[::2], string.letters[1::2])
    [('a', 'b'), ('c', 'd'), ..., ('W', 'X'), ('Y', 'Z')]

It extends readily to longer groupings:

    >>> zip(string.letters[::3], string.letters[1::3], string.letters[2::3])
    [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i'), ...

Obviously, if your lists are long, you can substitute itertools.izip for
zip.  There's probably some easy way to achieve the same result with
itertools.groupby, but I'm out of my experience there...

Skip
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to