delete items from list by indices
Peter Otten
__peter__ at web.de
Wed Sep 23 04:48:27 EDT 2009
blumenkraft wrote:
> I have some list:
> x = [8, 9, 1, 7]
> and list of indices I want to delete from x:
> indices_to_delete = [0, 3], so after deletion x must be equal to [9,
> 1].
>
> What is the fastest way to do this? Is there any builtin?
Why's that obsession with speed?
>>> items = ["a", "b", "c", "d"]
>>> delenda = [0, 3]
>>> for i in sorted(delenda, reverse=True):
... del items[i]
...
>>> items
['b', 'c']
>>> items = ["a", "b", "c", "d"]
>>> delenda = set([0, 3])
>>> items = [item for index, item in enumerate(items) if index not in
delenda]
>>> items
['b', 'c']
If you really need to modify the list in place change
items = [item for ...]
to
items[:] = [item for ...]
Try these and come back to complain if any of the above slows down your
script significantly...
Peter
More information about the Python-list
mailing list