4 ms·
> But it's actually shorter It's not: with def() you have to explicitly write return, while with lambda it is implicit.
by ot 13y ago
> But it's actually shorter
It's not: with def() you have to explicitly write return, while with lambda it is implicit.
- gamegoblin 13y agoYou don't need a return, just a print (since we are doing FizzBuzz). For tghw's solution to work you'd have to have a print outside of the function call (since you can't print from a lambda). With the def, you can print inside of the function (and don't need a return, since you're just printing).
- kilink 13y agoA minor quibble, but in Python 3 you can print in a lambda because print is no longer a keyword.
- gamegoblin 13y agoAs a non-Python 3 user, I just opened up the python 3 REPL to try something I always find myself wanting to do in tiny little python scripts: map(print, some_list) Unfortunately, it returned a map object, which I guess is also new in Python 3 (I assume it's a lazy application device).
- kilink 13y agoYeah, the map builtin is essentially itertools.imap in python 3.
- benesch 13y agoYou can (ab)use iterable unpacking in Py3k, now that print's a real function: print(*[1,2,3], sep='\n')
- wting 13y agoUse `list()` to force eager evaluation with Python 3 map / filter.
- omaranto 13y agoI use this function to force evaluation of elements in a generator: def do(gen): for x in gen: pass It evaluates all elements of a generator with storing them in memory. If you don't mind generating some garbage, you can just use the list function instead.