need help with list/variables
Jonathan Gardner
jgardner at jonathangardner.net
Tue Dec 30 17:00:39 EST 2008
On Dec 30, 11:41 am, 5lvqbw... at sneakemail.com wrote:
>
> >>> conc = lambda x,y: x[:] + y # concatenate 2 lists without side effects
> >>> mylist = ['something\n', 'another something\n', 'something again\n']
> >>> myvar = reduce(conc, mylist)
> >>> print myvar
>
"conc"? "side effects"? Missing Lisp much? ;-)
Let's try to Pythonize your lisp.
One:
Assigning a lambda to a variable? Just use def. It's pretty much the
same thing.
>>> def conc(x,y): return x[:]+y
Two:
I don't think x+y affects x at all when x and y are lists. (Is that a
lispism?) So x[:]+y has an unnecessary array copy.
>>> def conc(x,y): return x+y
Three:
Python may still be slow at string concatenation. (Perl is fast.)
Rather than concatenating one at a time, it's better, I understand, to
build up a list and then join() them together.
The other posters got the right answer in the pythonic way.
More information about the Python-list
mailing list