[Tutor] reducing a list evenly when deleting elements by index
Steven D'Aprano
steve at pearwood.info
Mon Sep 17 05:25:53 CEST 2012
On 17/09/12 11:15, Pete O'Connell wrote:
> Hi, I have a bezier line with 20 points on it and I am trying to reduce
> this to a line with 4 points, keeping the first and last points and 2
> evenly spaced points in between like so:
In general in Python, it is faster and much easier to create a new list
rather than to mess about deleting items from a list.
So instead of calling del 16 times, which has to move list items around,
it will be faster and simpler to create a new list:
new = [old[0], old[6], old[13], old[19]]
then just use the new list. If you really need to modify the old list in
place (perhaps because other parts of the code need to see the same
change) then you can do a slice-assignment:
old[:] = new # note the [:] slice
--
Steven
More information about the Tutor
mailing list