Need help porting Perl function
kj
socyl at 987jk.com.invalid
Sun Jun 8 12:50:19 EDT 2008
In <7248c81b-0ff9-45f5-acb5-63a8b2d41817 at f24g2000prh.googlegroups.com> John Machin <sjmachin at lexicon.net> writes:
>It's nothing to do with list comprehensions, which are syntactical
>sugar for traditional loops. You could rewrite your list comprehension
>in the traditional manner...
>and it would still fail for the same reason: mutating the list over
>which you are iterating.
I normally deal with this problem by iterating backwards over the
indices. Here's how I coded the function (in "Python-greenhorn
style"):
def cull(list):
culled = []
for i in range(len(list) - 1, -1, -1):
if not_wanted(list[i]):
culled.append(list.pop(i))
return culled
...where not_wanted() is defined elsewhere. (For my purposes at the
moment, the greater generality provided by making not_wanted() a
parameter to cull() was not necessary.)
The specification of the indices at the beginning of the for-loop
looks pretty ignorant, but aside from that I'm happy with it.
Kynn
--
NOTE: In my address everything before the first period is backwards;
and the last period, and everything after it, should be discarded.
More information about the Python-list
mailing list