On Feb 25, 9:15 pm, [EMAIL PROTECTED] wrote:
> On Feb 25, 5:12 pm, [EMAIL PROTECTED] wrote:
>
> > consider the following working loop where Packet is a subclass of
> > list, with Packet.insert(index, iterable) inserting each item in
> > iterable into Packet at consecutive indexes starting at index.
>
> >     i=0
> >     while(i<len(packet)-4):
> >         if packet[i:i+5]==Packet("01110"):
> >             packet.insert(i, "01111")
> >             i+=10 #skip the 5 bits inserted, and skip the 5 bits just
> > checked bc overlap should not trigger insertion
> >         else: i+=1
>
> > is there a way to do this more elegantly?  seems like a big kludge.
>
> If Packet consists of '0's and '1's, then it may be
> easier to convert to, or base the class on str (strings):
>
> packet = "1010101111011100111010001"
> print "BEFORE ", packet
> li = packet.split("01110")
> packet = "0111001111".join(li)
> print "AFTER  ", packet
>
> --
> Hope this helps,
> Steven



Steven, George,

Thanks for your responses.  Yea, that would work.

My original question still stands, though, in situations where a
simple string replacement might not be sufficient.  Is there a way to
insert into a list whilst iterating through it?

for example, consider a list of binary values.

for index in range(len(iterable)):
  item=iterable[index]
  if item==1:
     iterable.insert(index,0)

obv this wouldn't work because now all future indexes will be off by
the number of previously inserted items.

using a while loop to fix this ugly and counterintuitive.

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

Reply via email to