On Feb 18, 11:15 am, Steve Howell <showel...@yahoo.com> wrote: > def print_numbers() > [1, 2, 3, 4, 5, 6].map { |n| > [n * n, n * n * n] > }.reject { |square, cube| > square == 25 || cube == 64 > }.map { |square, cube| > cube > }.each { |n| > puts n > } > end > > IMHO there is no reason that I should have to name the content of each > of those four blocks of code, nor should I have to introduce the > "lambda" keyword.
You could do it without intermediate names or lambdas in Python as: def print_numbers(): for i in [ cube for (square, cube) in [(n*n, n*n*n) for n in [1,2,3,4,5,6]] if square!=25 and cube!=64 ]: print i But frankly, although there's no reason that you _have_ to name the content at each step, I find it a lot more readable if you do: def print_numbers(): tuples = [(n*n, n*n*n) for n in (1,2,3,4,5,6)] filtered = [ cube for (square, cube) in tuples if square!=25 and cube!=64 ] for f in filtered: print f -- http://mail.python.org/mailman/listinfo/python-list