How about a concrete example where lambda is more elegant than a
named block of code
aList=['a','bb','ccc','dddd','ee'] bList=aList[:] #deep copy assert not bList is aList
def sortByLength(item1,item2): return cmp(len(item1),len(item2))
bList.sort(sortByLength) assert bList==['a', 'bb', 'ee', 'ccc', 'dddd']
aList.sort(lambda x,y:cmp(len(x),len(y))) assert aList==['a', 'bb', 'ee', 'ccc', 'dddd']
Now this is a concrete example of how lambda simplifies code, at least for me because it does not clutter my mental name space. Also
it is much shorter. However it should be said that this is very much
a question of taste.
Indeed. In this case, I like the version without lambda. Naming the function serves as documentation, so I don't even need to read an interpret the body of the function to know what it does. Assuming that the name correctly describes the behavior of course, but I need to check that only once. From then on, sort(sortByLength) instantly explains what it does, while sort(lambda x,y: cmp(len(x),len(y)) needs much more parsing.
But I agree that there are cases where lambda is more useful and/or clearer.
-- "Codito ergo sum" Roel Schroeven
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor