On Mon, May 4, 2009 at 3:01 PM, John O'Hagan <m...@johnohagan.com> wrote:

> On Mon, 4 May 2009, Matthias Gallé wrote:
> > Hi.
> >
> > My problem is to replace all occurrences of a sublist with a new element.
> >
> > Example:
> > Given ['a','c','a','c','c','g','a','c'] I want to replace all
> > occurrences of ['a','c'] by 6 (result [6,6,'c','g',6]).
> >
>
> li=['a', 'c', 'a', 'c', 'c', 'g', 'a', 'c']
> for i  in range(len(li)):
>    if li[i:i + 2] == ['a', 'c']:
>        li[i:i + 2] = ['6']
>
> HTH,
>
> John
>

Beware that you are mutating the list you are iterating over. That could
lead to some strange bugs (for instance if you replaced the deleted items
with a longer sequence, the range(len(li)) would still go up to the original
lenght).
It is better to modify a new list instead. Eg you could append to a new
list.

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

Reply via email to