2009/10/9 Oxymoron <[email protected]>:
> On Fri, Oct 9, 2009 at 11:02 PM, Kent Johnson <[email protected]> wrote:
>> On Fri, Oct 9, 2009 at 3:54 AM, Stefan Lesicnik <[email protected]> wrote:
>>
>> You can easily keep track of the previous item by assigning it to a
>> variable. For example this shows just the increasing elements of a
>> sequence:
>>
>> In [22]: items = [0, 1, 3, 2, 8, 5, 9 ]
>>
>> In [23]: last = None
>>
>> In [24]: for item in items:
>>   ....:     if last is None or item > last:
>>   ....:         print item
>>   ....:     last = item
>
> Darn... this is what happens when you're stuck on one solution
> (referring to my index-only ways in the last post) - you miss other
> obvious ways, duh * 10. Apologies for the unnecessarily complicated
> exposition on iterables above. :-(
>
>
>
> --
> There is more to life than increasing its speed.
>  -- Mahatma Gandhi
> _______________________________________________
> Tutor maillist  -  [email protected]
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>

Another way, if you just want to track two consecutive items (which
probably won't help in this case, but is useful to know), is to zip
together two iters over the list, one omitting the first item, the
other omitting the last:

>>> lst = range(5)
>>> for v1, v2 in zip(lst[:-1], lst[1:]):
...     print v1, v2
...
0 1
1 2
2 3
3 4
4 5

If you're concerned about memory usage (zip generates an intermediate
list, twice the size of the original), you can use itertools.izip,
which is the same except it doen't generate the list:  it's xrange to
zip's range.

Also, rather than mucking around with xrange() and len(), I'd always
recommend using enumerate:

e.g. Your example of

for i in xrange(0, len(x)-1):
   print x[i], x[i+1]

becomes

for i, v in enumerate(x[:-1]):  #omitting last value in list to avoid IndexError
   print v, x[i+1]

I've got to say that of the two, I prefer the zip method: it looks
cleaner, at least to my eyes.

-- 
Rich "Roadie Rich" Lovely

There are 10 types of people in the world: those who know binary,
those who do not, and those who are off by one.
_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to