On 1 Jul 2007 11:09:40 GMT, Martin Durkin <[EMAIL PROTECTED]> wrote:
> Duncan Booth <[EMAIL PROTECTED]> wrote in
> news:[EMAIL PROTECTED]:
>
> > Martin Durkin <[EMAIL PROTECTED]> wrote:
> >
> >>>>>> def rev(x):
> >>>             mylist = []
> >>>             for char in x:
> >>>                  mylist.append(char)
> >>>             mylist.reverse()
> >>>             for letter in mylist:
> >>>                  print letter
> >>>
> >>> However, compare the incredible difference in clarity and elegance
> >>> between that and:
> >>>
> >>>> >>> print "\n".join("spam"[::-1])
> >>>
> >>
> >> OK, maybe I'm missing the point here as I'm new to Python. The first
> >> one seems clearer to me. What am I missing?
> >>
> > I think all you are missing is familarity with Python, but I too don't
> > like one-liners simply for their own sake.
> >
>
> I guess that's it. The first one reads more like a textbook example which
> is about where I am at. Is there any speed benefit from the one liner?

The one line is quite a bit faster:

[EMAIL PROTECTED] ~ $ python -m timeit 's = "onomatopoeia"; s = s.join(s[::-1])'
100000 loops, best of 3: 6.24 usec per loop

[EMAIL PROTECTED] ~ $ python -m timeit '
> def rev(x):
>     mylist = []
>     for char in x:
>         mylist.append(char)
>     mylist.reverse()
>     return "".join(mylist)
>
> s = "onomatopoeia"
> s = rev(s)'
100000 loops, best of 3: 9.73 usec per loop

-- 
Evan Klitzke <[EMAIL PROTECTED]>
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to