On Sun, May 20, 2018 at 5:55 PM, Irv Kalb <i...@furrypants.com> wrote:

> Is there a way to do that without the list comprehension? I'm building
> this as part of a class, and I will not have talked about list
> comprehensions up until that point.
>

​A list comprehension is the clearest and most-pythonic way to do this (it
would have been my suggestion if Daniel hadn't beat me to it).

You could modify and unroll the initial algorithm you started with to make
it work. It's a lot less pretty, but it's clear algorithmically (which is
the point pedagogically). It also has the advantage of being the most
efficient algorithm for deletion in an array (no reallocation should be
necessary, and copying is minimized).

i_read  = 0
i_write = 0
while i_read < len(myList):
    item = myList[i_read]
    i_read += 1
    if needsToBeDeleted(item):
        pass
    else:
        myList[i_write] = item
        i_write += 1
while len(myList) > i_write:
    myList.pop()

Ian​

Reply via email to