[Python-ideas] Make map() better

Neil Girdhar mistersheik at gmail.com
Thu Sep 14 19:15:36 EDT 2017


For these examples, you shouldn't be using map at all.

On Wednesday, September 13, 2017 at 11:10:39 AM UTC-4, Jason H wrote:
>
> The format of map seems off. Coming from JS, all the functions come 
> second. I think this approach is superior. 
>
> Currently: 
> map(lambda x: chr(ord('a')+x), range(26)) # ['a', 'b', 'c', 'd', 'e', 'f', 
> 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 
> 'v', 'w', 'x', 'y', 'z'] 
>
> But I think this reads better: 
> map(range(26), lambda x: chr(ord('a')+x)) 
>
> Currently that results in: 
> TypeError: argument 2 to map() must support iteration 
>
> Also, how are we to tell what supports map()? 
> Any iterable should be able to map via: 
> range(26).map(lambda x: chr(ord('a')+x))) 
>
> While the line length is the same, I think the latter is much more 
> readable, and the member method avoids parameter order confusion 
>
> For the global map(), 
> having the iterable first also increases reliability because the lambda 
> function is highly variable in length, where as parameter names are 
> generally shorter than even the longest lambda expression. 
>
> More readable: IMHO: 
> map(in, lambda x: chr(ord('a')+x)) 
> out = map(out, lambda x: chr(ord('a')+x)) 
>

out = (chr(ord('a')+x) for x in out)

is the most legible.
 

> out = map(out, lambda x: chr(ord('a')+x))  


> Less readable (I have to parse the lambda): 
> map(lambda x: chr(ord('a')+x), in) 
> out = map(lambda x: chr(ord('a')+x), out) 
> out = map(lambda x: chr(ord('a')+x), out) 
>
> But I contend: 
> range(26).map(lambda x: chr(ord('a')+x))) 
> is superior to all. 
>
>   
>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________ 
> Python-ideas mailing list 
> Python... at python.org <javascript:> 
> https://mail.python.org/mailman/listinfo/python-ideas 
> Code of Conduct: http://python.org/psf/codeofconduct/ 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170914/f9e42dd7/attachment-0001.html>


More information about the Python-ideas mailing list