Composition of functions

Stephen Hansen me+list/python at ixokai.io
Thu Jul 1 00:04:28 EDT 2010


On 6/30/10 8:50 PM, Mladen Gogala wrote:
>>>> x="quick brown fox jumps over a lazy dog"
>>>> y=''.join(list(x).reverse())
> Traceback (most recent call last):
>    File "<stdin>", line 1, in<module>
> TypeError
>>>>
>

> Why is TypeError being thrown? The reason for throwing the type error is
> the fact that the internal expression evaluates to None and cannot,
> therefore, be joined:

The "reverse" method, like "sort" and a couple others, are in-place 
operations. Meaning, they do not return a new list but modify the 
existing list. All methods that are "in-place" modifications return None 
to indicate this. This way you can't make a mistake and think its 
returning a sorted / reversed copy but it isn't.

However, you can easily get what you want by using the 'reversed' 
function (and similarly, the 'sorted' function), a la:

 >>> y = ''.join(reversed(list(x)))

The 'reversed' and 'sorted' functions are generators that lazilly 
convert an iterable as needed.

-- 

    ... Stephen Hansen
    ... Also: Ixokai
    ... Mail: me+list/python (AT) ixokai (DOT) io
    ... Blog: http://meh.ixokai.io/




More information about the Python-list mailing list