Need help porting Perl function
Daniel Fetchinson
fetchinson at googlemail.com
Sat Jun 7 14:42:17 EDT 2008
> Hi. I'd like to port a Perl function that does something I don't
> know how to do in Python. (In fact, it may even be something that
> is distinctly un-Pythonic!)
>
> The original Perl function takes a reference to an array, removes
> from this array all the elements that satisfy a particular criterion,
> and returns the list consisting of the removed elements. Hence
> this function returns a value *and* has a major side effect, namely
> the target array of the original argument will be modified (this
> is the part I suspect may be un-Pythonic).
>
> Can a Python function achieve the same effect? If not, how would
> one code a similar functionality in Python? Basically the problem
> is to split one list into two according to some criterion.
This function will take a list of integers and modify it in place such
that it removes even integers. The removed integers are returned as a
new list (disclaimer: I'm 100% sure it can be done better, more
optimized, etc, etc):
def mod( alist ):
old = alist[:]
ret = [ ]
for i in old:
if i % 2 == 0:
ret.append( alist.pop( alist.index( i ) ) )
return ret
x = range(10,20)
print x
r = mod( x )
print r
print x
HTH,
Daniel
--
Psss, psss, put it down! - http://www.cafepress.com/putitdown
More information about the Python-list
mailing list