Steven Bethard wrote:
> Terry Reedy wrote:
> 
>> "Gregory Guthrie" <[EMAIL PROTECTED]> wrote in message
>> news:[EMAIL PROTECTED]
>>
>>>   - why is len() not a member function of strings? Instead one says
>>> len(w).
>>
>>
>> Consider
>>
>>>>> map(len, ('abc', (1,2,3), [1,2], {1:2}))
>>
>> [3, 3, 2, 1]
>>
>> Now try to rewrite this using methods (member functions).
> 

map(lambda obj: obj.__len__(), ('abc', (1,2,3), [1,2], {1:2}))

> For all the doubters out there, here's an example you can't really
> rewrite with a list comprehension::
> 
>     >>> sorted(['aaa', 'bb', 'c'])
>     ['aaa', 'bb', 'c']
>     >>> sorted(['aaa', 'bb', 'c'], key=len)
>     ['c', 'bb', 'aaa']

Nope, but it still doesn't require len() being a function

> If len() were a method of string objects, you could try using the
> unbound method and writing this as::
> 
>     >>> sorted(['aaa', 'bb', 'c'], key=str.len)
>     ['c', 'bb', 'aaa']
> 
> But then your code would break on lists that weren't strings.

sorted(['aaa', 'bb', 'c'], key=lambda obj: obj.__len__())

Note that in both cases, my lambda is mostly a reimplementation of len()
- and as far as I'm concerned, len() is quite ok...

-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to