>> 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