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...@python.org <javascript:> > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/