[Tutor] Process list elements as consecutive pairs
Hugo Arts
hugo.yoshi at gmail.com
Fri Mar 5 22:48:41 CET 2010
2010/3/5 Emad Nawfal (عمـ نوفل ـاد) <emadnawfal at gmail.com>:
>
>
> Here is a general solution that I also took from the Tutor list some time
> ago. It allows you to have consequences of (any) length.
>
>>>> def makeVectors(length, listname):
> ... """takes the length of the vector and a listname returns vectors"""
> ... vectors = (listname[i:i+length] for i in
> range(len(listname)-length+1))
> ... return vectors
> ...
>>>> myList = [1,2,3,4,5,6]
>
>>>> bigrams = makeVectors(2, myList)
>>>> bigrams
> <generator object <genexpr> at 0xb7227e64>
>>>> for bigram in bigrams: print bigram
> ...
> [1, 2]
> [2, 3]
> [3, 4]
> [4, 5]
> [5, 6]
Except the OP requested pairs (1, 2), (3, 4), i.e. with no duplicate
elements. Here is a generator that does what you need:
def pairs(seq):
it = iter(seq)
try:
while True:
yield it.next(), it.next()
except StopIteration:
return
Hugo
More information about the Tutor
mailing list