On Tuesday 16 August 2016 16:28, Lawrence D’Oliveiro wrote: > On Tuesday, August 16, 2016 at 6:26:01 PM UTC+12, Paul Rudin wrote: >> sohcahtoa82 writes: >>> squared_plus_one_list = map(lambda x: x**2 + 1, some_list) >> >> I realise that this is about understanding lambda, but it's worth noting >> in passing that we tend to write this sort of thing as: >> >> squared_plus_one_list = [x**2 + 1 for x in some_list] > > The difference being that the “map” function takes an iterable and returns an > iterator. > > Why could this difference be important?
*shrug* Some members of the Python community, particularly GvR, prefer list comprehensions and generator expressions to using the Lisp-ish "map()" function. At least in the past, and possibly still, using a comprehension or a generator expression may be more efficient, as it can avoid the expense of a function call. The advice that used to be given (and which may still be valid, for all I know) is that if you have to write a function using lambda in order to use map(), it's usually faster to use a comprehension/genexp. E.g. out of the following: [len(x)+1 for x in sequence] list(map(lambda x: len(x) + 1, sequence)) the first will probably be faster as well as easier to read and write. -- Steve -- https://mail.python.org/mailman/listinfo/python-list