[Python-ideas] pop multiple elements of a list at once (original) (raw)

Brett Cannon brett at python.org
Sun Jul 11 20:47:53 CEST 2010


On Sun, Jul 11, 2010 at 10:58, Diego Jacobi <jacobidiego at gmail.com> wrote:

Hi. As recommended here: http://bugs.python.org/issue9218 I am posting this to this list.

I am currently working with buffer in an USB device and pyusb. So when i read from the buffer of endpoint, i get an array.Array() list. I handle this chunk of data with a thread to send a receive the information that i need. In this thread, i load a list with all the information that is read from the USB device, and another layer with pop this information from the threads buffer. The thing i found is that, to pop a variable chunk of data from this buffer without copying it and deleting the elements, i have to pop one element at the time.  def getchunk(self, size):  for x in range(size):  yield self.recvbuffer.pop() I guess that it would be improved if i can just pop a defined number of elements, like this: pop self.recvbuffer[:-size] or self.recvbuffer.pop(,-size) That would be... "pop from (the last element minus size) to (the last element)" in that way there is only one memory transaction. The new list (or maybe a tuple) points to the old memory address and the recvbuffer is advanced to a one new address. Data is not moved.

Why can't you do del self.recv_buffer[-size:]?

Note that i like the idea of using "pop" as the "del" operator for lists, but i am concient that this would not be backward compatible.

Too specialized, so that will never fly.

-Brett



More information about the Python-ideas mailing list